// 导入redis
const redis = require('redis'); const config = require('../config');
// 建立与redis的连接
const client = redis.createClient(config.port, config.host);
// 使用on来监听状态
client.on('connect', () => console.log('与redis成功建立连接')); client.on('ready', () => console.log('redis服务已经就绪')); client.on('error', err => console.error('redis服务产生了错误:', err));
class RedisUtil {
/**
* 保存键值对
* @param key
* @param value
*/
save(key, value, expire) {
// 保存入库
return new Promise((resolve, reject) => {
client.set(key, JSON.stringify(value), (err, result) => {
console.log('数据存储成功');
if (err) {
console.log(err);
reject(err);
}
if (!isNaN(expire) && expire > 0) {
client.expire(key, parseInt(expire));
}
resolve(result)
});
})
}
/**
* 根据key查询redis value
* @param key
*/
query(key) {
return new Promise((resolve, reject) => {
client.get(key, (err, result) => {
if (err) {
console.log(err);
reject(err);
}
resolve(result);
})
})
}
/**
* 更新redis中的信息
* @param key
* @param value
*/
update(key, value) {
// 更新的本质其实还是执行redis的set
// 首先通过key获取对象,如果获取不到,返回异常,可以获取,继续执行set
const condition = value;
return new Promise((resolve, reject) => {
client.get(key, (err, value) => {
if (err) {
console.error('查询redis数据异常');
reject(err);
}
if (value) {
// 执行set
client.set(key, JSON.stringify(condition), (err, result) => {
if (err) {
console.error('数据更新失败');
reject(err);
}
console.log('信息更新成功');
resolve(result);
});
} else {
console.err(`根据用户名:${key}无法查询到的信息`);
reject(`根据用户名:${key}无法查询到的信息`);
}
});
})
}
/**
* 删除
* @param key
*/
delete(key) {
return new Promise((resolve, reject) => {
client.del(key, (err, result) => {
if (err) {
console.error('数据删除失败');
reject(err);
}
console.error('数据删除成功');
resolve(result);
});
})
}
}
module.exports = RedisUtil