我的网站开发技术经验总结 我的网站开发技术经验总结
首页

fangdown

我的网站开发技术经验总结
首页
  • 认识ESM
  • chrome-talend插件,类似postman
  • sequelize 使用及技巧
  • UML工具Power Designer建表
  • sequelize相关操作文档
  • 解决抖音获取签名及并发的问题
  • 记一次解决抖音分享页混淆字体,字体图标转UID解决方案
  • 获取抖音用户作品列表信息
  • 获取抖音用户作品列表信息-进阶
  • 获取抖音用户作品列表信息-进阶3
  • 如何根据抖音号获取用户信息
  • 获取用户最新视频
  • 模块化-import和require的区别
  • eslint规范
  • js容错处理
  • js-数组分组,执行promise
  • reduce使用遇到的问题
  • 正则匹配html的元素内容
  • taro 小程序 弹窗层禁止底部滚动
  • 公众号签名问题
  • CentOS7中MariaDB重置密码
  • nginx多域名配置
  • node访问接口,得到乱码的结果,原因-Accept-Encoding
  • node写文件到json中
  • node抓取html内容
  • Node.js使用ES6语法
  • express 使用cors中间件解决跨域
  • node + express + session + redis 进行持久化缓存
    • 需求
    • 分析
    • 实现
    • 代码
    • 查看redis数据
    • 参考
  • node中读取文件夹,获取文件名称
  • pm2常用命令
  • 使用pm2管理后台node服务
  • typescript puppeteer支持window及document属性
  • node读取json文件
  • node中使用redis缓存
  • node + github的webhook完成自动部署
  • vuepress-blog的性能优化-CDN
  • CENTOS7下安装REDIS
  • promise then和catch的学习和使用
  • promise在循环中的串行并行用法
  • puppeteer常用知识
  • centos部署安装puppeteer
  • python的学习和使用
  • Taro+TypeScript - Mobx实践
  • 爬虫系列 --- 反爬机制和破解方法汇总
  • 安全-html转码
  • taro中使用animation动画
  • charles 使用
  • Mac下VSCode设置iTerm2终端样式
  • centos一步步完成站点部署
  • 云闪付做地铁的思路
  • 准备技能
  • 备案pc项目介绍
  • 备案小程序项目介绍
  • 小程序二维码扫码功能
  • 小程序域名组件开发
  • 小程序添加水印
  • 规则引擎优化
  • 记一次hooks代替redux的经历
  • 通过nodejs+koa+stream进行服务端图片代理
  • nodeJs接入log4j日志
  • nodejs+typescript项目中添加全局global属性
  • create-react-app 安装 bizcharts 项目崩溃
  • 使用MutationObserver监控dom的变化
  • 服务器重启后启动相关服务
  • moment国际化的问题
  • 项目经验
fangdown
2019-12-12
目录

node + express + session + redis 进行持久化缓存

# 需求

在node项目中记录用户信息,把session存入redis中去

# 分析

利用express-session 和 redis结合,把数据存入到redis中 利用到的一些第三方库

npm i express-session connect-redis ioredis -S

# 实现

  1. 生成redis实例client(必需有client,网上方法有的直接把配置放进去,我这个版本不行,会报错)
  2. 应用中间件session,参数为一些值,主要的为store,存储地点redisStore
  3. 在请求中可以给req.session赋值,也可以读值
  4. 启动应用

# 代码

const express = require('express')
const session = require('express-session')
const connectRedis = require('connect-redis')
const IORedis = require('ioredis')
const RedisStore = connectRedis(session);
const redisClient = new IORedis({
  "host": "148.70.216.46",
  "port": 6379,
  "db": 0,
  "password": "fang674123",
  "prefix": "fd:"
});
const redisStore = new RedisStore({client: redisClient});
const app =  express()
app.use(session({
  "secret": "fangdown-sign", //通过设置的secret字符串,来计算hash值并放在cookie中,使产生的signedCookie防篡改
  "name": "fd", // 设置cookie中,保存session的字段名称,默认为connect.sid
  "rolling": true, // 每个请求都重新设置一个cookie,默认为false
  "resave": true,  // 即使session没有被修改,也保存session值,默认为true
  "saveUninitialized": false, // 强制未初始化的session保存到数据库
  "cookie": {
    "maxAge": 86400000,
  },
  store: redisStore
}))
app.get('/', (req, res) => {
  if(req.session && req.session.isVisit || req.cookies.isFirst){
    req.session.isVisit+=1
    res.send(`<p>第 ${req.session.isVisit}次来此页面</p>`)
  }else{
    req.session.isVisit = 1
    res.cookie('isFirst', 1);
    res.send('欢迎第一次访问')
  }
})
app.listen(10000, () =>{
  console.log('app is start on 10000')
})

# 查看redis数据

keys *

127.0.0.1:6379> keys *
1) "sess:L25ajrpQ5yCcF8B2WugG1JKxU42qIrph"
2) "wechat-ticket"
3) "wechat-token"
127.0.0.1:6379> 

# 参考

express如何使用session与cookie (opens new window) node+express+redis的简单应用(将Session存放到Redis中) (opens new window) node中Session持久化与Redis缓存 (opens new window) Express + Session 实现登录验证 (opens new window) express-session使用 (opens new window)

#node
上次更新: 2021/12/19, 18:05:42
express 使用cors中间件解决跨域
node中读取文件夹,获取文件名称

← express 使用cors中间件解决跨域 node中读取文件夹,获取文件名称→

最近更新
01
多分支修复撞车的问题
05-01
02
如何成为架构师
01-23
03
服务器部署全过程
11-23
更多文章>
Theme by Vdoing | Copyright © 2019-2026 fangdown | 粤ICP备19079809号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式