express配置redis持久化存储session

Session用于在服务端保存用户会话状态(如:用户登录信息等)。Session在程序重启、多进程运行、负载均衡、跨域等情况时,会出现Session丢失或多进程、多个负载站点间状态不能共享的情况。
要解决这些问题,我们需要将Session持久化存储,Redis存储是一个非常不错的Session持久化解决方案。

相关模块

在express配置redis存储需要用到redis模块,session处理模块

1
npm install redis connect-redis express-session --save

其中,connect-redis是一个关于session的持久化插件, 配合express-session使用。此模块基于redis,将session相关信息持久化。

redis存储配置

引入相关模块

1
2
3
var session = require('express-session')
var redis = require('redis')
var RedisStore = require('connect-redis')(session)

配置存储

1
2
3
4
5
6
7
8
9
10
var client = redis.createClient({
host: 'localhost',
port: 6379
})
app.use(sessioin({
store: new ReidsStore({client: client}),
secret: 'this_is_secret',
resave: false,
saveUninitialized: false
}))

session的使用

配置完成后,express-session会在HTTP的请求对象request中添加一个session属性,通过这个属性我们可以实现Session会话的读写,而express-session会自动将其持外化到Redis存储中。

1
2
3
4
5
// 设置session
req.session.test = 123

// 读取session
var test = req.session.test
文章作者: Dar1in9
文章链接: http://dar1in9s.github.io/2020/05/19/node/express配置redis持久化存储session会话/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Dar1in9's Blog