当前位置: 首页 > article >正文

Nodejs使用redis

框架:koa,通过koa-generator创建

redis: 本地搭建,使用默认帐号,安装说明地址以及默认启动设置:https://redis.io/docs/latest/operate/oss_and_stack/install/install-redis/install-redis-on-linux/

中间件:koa-generic-redis, koa-redis

1. 配置中间件:

const session = require('koa-generic-session')
const RedisStore = require('koa-redis')


app.use(session({
  key:"koa", // 设置返回给浏览器的包含sessionId的cookie的key
  store: new RedisStore({ // 连接本地redis的信息,如果需要密码,需要设置/etc/redis/redis.conf 的 
    host:"localhost",
    port:"6379",
    password:"111111"
  }),
  ttl:60 * 1000
}))

2. sessionID保存原理解析

router.get('/session',async (ctx,next)=>{
  if(!ctx.session.user){
    ctx.session.user={name:'xxx'} // 如何没有session
  }
   ctx.body = ctx.session.user
})

ctx.session.user = {name:'xxx'}, 这行代码会触发生成sessionId,koa-redis中间件会将值写入到redis,如图所示:

koa-generic-session中间件负责生成sessionId,并将中间件配置的key的值作为cookie的名字,sessionId作为值,返回到浏览器客户端。如图所示:

当浏览器再次请求的时候,请求头会携带cookie,如图:

接口相应的逻辑里,可以从请求头的cookie里获取sessionId,后端从redis里获取sessionId,如果没有表示已过期(redis可以设置过期时间)。完整的cookie+sessionid会话过程就整理清楚了


http://www.kler.cn/a/592065.html

相关文章:

  • 【QT】编写 QT Hello World程序 对象树 Qt 编程事项
  • Docker 镜像优化:如何避免重复安装软件,加速服务的构建与部署
  • turfijs合并相邻或者相交多边形
  • 华为手机新品将采用新屏幕形态,3月20日揭晓谜底
  • Qt | 网络编程+面试题
  • Linux主机持久化技术
  • Qwen2.5-VL 开源视觉大模型,模型体验、下载、推理、微调、部署实战
  • VS Code + Git 分支操作指南(附流程图)
  • 解决 HTTP 请求中的编码问题:从乱码到正确传输
  • Redis 使用入门与进阶指南
  • 《算法笔记》9.2小节——数据结构专题(2)->二叉树的遍历 问题 A: 复原二叉树(同问题 C: 二叉树遍历)
  • 【MySQL数据库】多表查询(笛卡尔积现象,联合查询、内连接、左外连接、右外连接、子查询)-通过练习快速掌握法
  • 【redis】渐进式遍历(scan)和数据库数据库管理
  • STL中的哈希表(unordered_map和unordered_set内部使用的数据结构)
  • 华为IPD变革20年历程
  • JMeter 参数化工作原理说明
  • 【WEB APIs】正则表达式
  • 25. K 个一组翻转链表(C++)
  • Java面试黄金宝典1
  • 数据库:一文掌握 MongoDB 的各种指令(MongoDB指令备忘)