code: function init(){
      self.type = config.type || 'redis';
      if(config.redisMock){
        self.db = config.redisMock;
      }
      else{
        if(config.redisUrl){
          self.redisData = config.redisUrl || null;
        }
        else if(config.redisEnv){
          self.redisData = process.env[config.redisEnv] || null;
        }
        else if(config.redisData){
          self.redisData = config.redisData;
        }
        self.readOnly = (typeof config.readOnly === 'boolean') ? config.readOnly : false;
        try {
          if (self.redisData) {
            if(typeof self.redisData === 'string'){
              self.db = redis.createClient(self.redisData,
                {'no_ready_check': true,
                retry_strategy: retryStrategy});
            } else {
              self.db = redis.createClient(self.redisData.port,
                self.redisData.hostname, {'no_ready_check': true,
                retry_strategy: retryStrategy});
  
              // don't call redis auth method if no auth info passed
              if (self.redisData.auth) {
                self.db.auth(self.redisData.auth);
              }
            }
            self.db.on('error', function(err) {
              console.log('Error ' + err);
            });
            process.on('SIGTERM', function() {
              self.db.quit();
            });
            log(false, 'Redis client created with the following defaults:', {expiration: self.defaultExpiration, verbose: self.verbose, readOnly: self.readOnly});
          } else {
            self.db = false;
            log(false, 'Redis client not created: no redis config provided');
          }
        } catch (err) {
          self.db = false;
          log(true, 'Redis client not created:', err);
        }
      }
    }
docs: ****************************************** PRIVATE FUNCTIONS *******************************************
   
  Initialize redisCacheModule given the provided constructor params