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