安装redis
npm i -S redis async
注意:这里安装的async非必要,但最好装上,它是在导出所有redis所有数据时会用到
根目录下新建_redis.js:
/**
* /cache/_redis.js
* redis的方法get和set
*/
const redis = require('redis')
const { REDIS_CONF } = require('./config/settings.js')
// 创建客户端
const redisClient = redis.createClient(REDIS_CONF.port, REDIS_CONF.host)
// console.log("redisClient:", redisClient)
redisClient.on('error', err => {
console.error('redis error', err)
})
/**
* redis set
* @param {string} key 键
* @param {string} val 值
* @param {number} timeout 过期时间,单位 s
*/
function set(key, val) {
if (typeof val === 'object') {
val = JSON.stringify(val)
}
redisClient.set(key, val)
}
// function set(key, val, timeout = 60 * 60) {
// if (typeof val === 'object') {
// val = JSON.stringify(val)
// }
// redisClient.set(key, val)
// redisClient.expire(key, timeout)
// }
/**
* redis get
* @param {string} key 键
*/
function get(key) {
const promise = new Promise((resolve, reject) => {
redisClient.get(key, (err, val) => {
if (err) {
reject(err)
return
}
if (val == null) {
resolve(null)
return
}
try {
resolve(
JSON.parse(val)
)
} catch (ex) {
resolve(val)
}
})
})
return promise
}
var async = require("async");
// 获取redis所有数据,返回数组
function redisDataList() {
const promise = new Promise((resolve, reject) => {
redisClient.keys("*", (err, keys) => {
if (keys) {
async.map(keys, function (key, cb) {
redisClient.get(key, function (error, value) {
if (error) return cb(error);
var dongle = {};
dongle['key'] = key;
dongle['value'] = JSON.parse(value);
cb(null, dongle);
});
}, function (error, results) {
if (error) return console.log(error);
resolve(results)
});
}
})
})
return promise
}
// function keys() {
// const promise = new Promise((resolve, reject) => {
// redisClient.keys("*", (err, keys) => {
// if (err) {
// reject(err)
// return
// }
// try {
// resolve(
// keys
// )
// } catch (ex) {
// resolve(keys)
// }
// })
// })
// return promise
// }
module.exports = {
set,
get,
redisDataList
}
使用:
await _redis.get('key')
await _redis.set('key',123)
await _redis.redisDataList()
获取指定字符串开头的所有key。如获取所有以AUS:Auth:Old_Dongle:Online_Time_Hb_开头的key
注意:
npm i redis@3.1.2 -S
注意redis版本,太高可能会报错,如下:
app.js,或者子路由页面
const redis = require('redis')
const client = redis.createClient(6379, '127.0.0.1')
client.on('error', (err) => {
console.log(err);
})
client.set('b', '123')
client.expire('b', 4)//4秒后过期,并自动被删除掉
client.get('b', (err, value) => {
if (err) throw err
console.log(value);
})