83 lines
1.9 KiB
JavaScript
83 lines
1.9 KiB
JavaScript
var redis = require('redis');
|
|
var config = require('../config');
|
|
var redisEnable = config.redis.enable;
|
|
|
|
if (redisEnable) {
|
|
// use custom redis url or localhost
|
|
var client = redis.createClient(config.redis.port || 6379, config.redis.host || 'localhost');
|
|
client.on('error', function (err) {
|
|
console.error('Redis连接错误: ' + err);
|
|
process.exit(1);
|
|
});
|
|
}
|
|
|
|
/**
|
|
* 设置缓存
|
|
* @param key 缓存key
|
|
* @param value 缓存value
|
|
* @param expired 缓存的有效时长,单位秒
|
|
*/
|
|
exports.setItem = (key, value, expired) => {
|
|
return new Promise((resolve, reject) => {
|
|
if (!redisEnable) {
|
|
return resolve();
|
|
}
|
|
|
|
client.set(key, JSON.stringify(value), err => {
|
|
if (err) {
|
|
return reject(err);
|
|
}
|
|
if (expired) {
|
|
client.expire(key, expired);
|
|
}
|
|
return resolve();
|
|
});
|
|
});
|
|
|
|
};
|
|
|
|
/**
|
|
* 获取缓存
|
|
* @param key 缓存key
|
|
* @param callback 回调函数
|
|
*/
|
|
exports.getItem = key => {
|
|
return new Promise((resolve, reject) => {
|
|
if (!redisEnable) {
|
|
return resolve(null);
|
|
}
|
|
|
|
client.get(key, function (err, reply) {
|
|
if (err) {
|
|
return reject(err);
|
|
}
|
|
return resolve(JSON.parse(reply));
|
|
});
|
|
});
|
|
};
|
|
|
|
/**
|
|
* 移除缓存
|
|
* @param key 缓存key
|
|
* @param callback 回调函数
|
|
*/
|
|
exports.removeItem = key => {
|
|
return new Promise((resolve, reject) => {
|
|
if (!redisEnable) {
|
|
return resolve();
|
|
}
|
|
|
|
client.del(key, err => {
|
|
if (err) {
|
|
return reject(err);
|
|
}
|
|
return resolve();
|
|
});
|
|
});
|
|
};
|
|
|
|
/**
|
|
* 获取默认过期时间,单位秒
|
|
*/
|
|
exports.defaultExpired = parseInt(require('../config/settings').CacheExpired);
|