Simple Redis Service Node js

const RedisClustr = require('redis-clustr');
const RedisClient = require('redis');
const bluebird = require('bluebird');

const DEFAULT_TTL_IN_SECONDS = 60;

const redis = new RedisClustr({
  servers: [
    {
      host: process.env.redisEndpoint,
      port: process.env.redisPort || '6379'
    }
  ],
  createClient: (port, host) => RedisClient.createClient(port, host, { no_ready_check: true })
});
bluebird.promisifyAll(redis);

class RedisService {
  static testRedis(redisInstance = redis) {
    return this.setKeyIfNotExistWithTTL('testRedisKey', 'testRedisValue', 60, redisInstance)
      .then(() => redisInstance.getAsync('testRedisKey'))
      .then(data => data);
  }

  static setKeyIfNotExistWithTTL(key, value, ttl = DEFAULT_TTL_IN_SECONDS, redisInstance = redis) {
    // eslint-disable-next-line
    return redisInstance.setnxAsync(key, value).then((isKeyWasSet) => {
      return isKeyWasSet !== 1 ? Promise.resolve(isKeyWasSet) : redisInstance.expireAsync(key, ttl);
    });
  }
}

module.exports = {
  redis,
  RedisService
};

No comments:

Post a Comment