redis在nodejs中的使用:
- 安装redis插件
- 创建redisClient实例,监听error事件
const redis = require("redis");
const { REDIS_CONF } = require("../config/db");
const redisClient = redis.createClient(REDIS_CONF.port, REDIS_CONF.host);
redisClient.on("error", (err) => {
console.log(err);
});
- 实现往redis存值得方法 set,往redis 取值的方法 get
function set(key, val) {
if (typeof val === "object") {
val = JSON.stringify(val);
}
redisClient.set(key, val, redis.print);
}
function get(key) {
return 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 (error) {
resolve(val);
}
});
});
}
redis在express中的使用
- 安装 redis 插件;创建 redisClien ; 监听error事件 【和nodejs中的处理相同】
- 安装 express-session 和 connect-redis
- 创建 RedisStore类
const session = require('express-session')
const RedisStore = require('connect-redis')(session)
- 创建sessionStore,将session存到redis中,注册到Express中
const redisClient = require('./db/redis')
const sessionStore = new RedisStore({
client: redisClient
})
app.use(session({
secret: 'Csieke123_Ex#sde34',
cookie: {
path: '/',
httpOnly: true,
maxAge: 24 * 60 * 60 * 1000,
},
store: sessionStore
}))
- 需要将属性存到redis中时,直接往req.session对象加属性即可 ; 取的时候,也是直接在req.session上取
req.session.username = data.username;
req.session.realname = data.realname;
author = req.session.username
redis在koa2中的连接和使用:
- 安装redis, koa-generic-session,koa-redis
- 注册session,将session存在redis里
const session = require('koa-generic-session')
const redisStore = require('koa-redis')
app.keys = ['Csi32#_34']
app.use(session({
cookie: {
path: '/',
httpOnly: true,
maxAge: 24 * 60 * 60 * 1000
},
store: redisStore({
all: `${REDIS_CONF.host}:${REDIS_CONF.port}`
})
}))
- 需要将属性存到redis中时,直接给ctx.session加此属性; 需要从redis取属性时,直接从ctx.session里取出这个属性即可
ctx.session.username = data.username
ctx.session.realname = data.realname
author = ctx.session.username