Session 默认存放在 Cookie 中,但是如果我们的 Session 对象过于庞大,
就会带来一些额外的问题:
1.浏览器通常都有限制最大的 Cookie 长度,当设置的 Session 过大时,浏览器可能拒绝保存。
2.Cookie 在每次请求时都会带上,当 Session 过大时,每次请求都要额外带上庞大的 Cookie 信息。
解决方法
egg-session-redis 就提供了将 Session 存储到 redis 中的能力,
在应用层,我们只需要引入 egg-redis 和 egg-session-redis 插件即可。
注意:先安装Redis
1.安装egg-session-redis
npm i egg-session-redis egg-redis --save
2.开启egg-session-redis
config/plugin.ts
// 开启sessionRedis 使session存储到 redis 中
sessionRedis: {
enable: true,
package: 'egg-session-redis',
},
redis: {
enable: true,
package: 'egg-redis',
},
3.配置redis
config/config.local.ts开发阶段
// 配置Redis
config.redis = {
client: {
host: '127.0.0.1',//ip
port: 6379,//端口号
password: '',//密码
db: 0,//数据库
},
agent: true,
};
4.测试
4-1 存储数据
ctx.session.captcha = {
code: 'QvT8',
expire: Date.now() + 60 * 1000, // 一分钟后过期
};
4-2 进入redis
终端输入
redis-cli -h 127.0.0.1 -p 6379
keys *
得到密钥
"95f8e50e-8e96-4d7c-8f43-f0571a50facd"
终端输入
get "95f8e50e-8e96-4d7c-8f43-f0571a50facd"
得到存储数据
"{\"captcha\":{\"code\":\"QvT8\",\"expire\":1659515514495},\"_expire\":1659601854499,\"_maxAge\":86400000}"