Files
2025-10-28 10:30:20 +08:00

71 lines
2.1 KiB
JavaScript

/**
* Created by strawmanbobi
* 2016-11-24
*/
require('../configuration/constants');
let ErrorCode = require('../configuration/error_code');
let Enums = require('../configuration/enums');
let BaseCache = require('./base_cache.js');
let redis = require("redis");
let logger = require('../logging/logger4js').helper;
let errorCode = new ErrorCode();
let enums = new Enums();
let Cache = function(_host, _port, _user, _password) {
this.redisClient = redis.createClient(_port, _host, {detect_buffers: true});
// initialize client according to run-time ENV
// in _user indicates the redis instance:token pair value
if(null != _password) {
logger.info("Redis needs authorization");
this.redisClient.auth(_password, redis.print);
}
logger.info("Redis client connected");
};
Cache.prototype = Object.create(BaseCache.prototype);
Cache.prototype.set = function(key, value, ttl, callback) {
this.redisClient.set(key, value, 'EX', ttl, function(err) {
if(err) {
logger.error("Redis set value failed with key " + key);
callback(errorCode.FAILED);
} else {
callback(errorCode.SUCCESS);
}
});
};
Cache.prototype.get = function(key, isBuffer, callback) {
if(true == isBuffer) {
this.redisClient.get(new Buffer(key), function (err, reply) {
if(err) {
logger.error("Redis get buffer failed with key " + key);
this.redisClient.end();
callback(errorCode.FAILED, null);
} else {
this.redisClient.end();
callback(errorCode.SUCCESS, reply);
}
});
} else {
this.redisClient.get(key, function(err, reply) {
if(err) {
logger.error("Redis get value failed with key " + key);
this.redisClient.end();
callback(errorCode.FAILED, null);
} else {
callback(errorCode.SUCCESS, reply);
}
});
}
};
Cache.prototype.delete = function(key, callback) {
callback(errorCode.SUCCESS);
};
module.exports = Cache;