code: function redis (redis) {
      // redis is being set
      if (defined(redis)) {
          // promisify redis if not already promisified
          if (!defined(redis.mgetAsync)) {
              throw new Error('redis must be promisified')
          }
          // create new cache instance
          this.cache = new ImmutableCoreModelCache({
              model: this,
              redis: redis,
          })
          // return model on set
          return this
      }
      // get existing redis client if any
      else if (defined(this.cache)) {
          return this.cache.redis
      }
  }
docs: @function redis
  
  set redis cache client
  
  @param {object} redis
  
  @returns {ImmutableCoreModel}