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}"
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐