session,redis

一、session直接是js变量,放在nodejs进程内存中的问题

  1. 进程内容有限,访问量过大,会导致内存暴增
  2. 正式线上运行是多线程,进程之间内存无法共享
    解决方案:redis
  3. session 访问频繁,对性能要求极高
  4. session可不考虑断电丢失数据的问题
  5. session数据量不会太大

二、redis

  1. 安装 npm i redis connect-redis -S
  2. 配置 和 启动方式:redis-server.exe redis.windows.conf
1.conf/db.js
REDIS_CONF = {
    port: 6379,
    host:'127.0.0.1'
}

2. db/redis.js
const redis = require('redis')
const { REDIS_CONF } = require('../conf/db.js')

// 创建客户端
const redisClient = redis.createClient(REDIS_CONF.port, REDIS_CONF.host)
redisClient.on('error', err => {
    console.error(err)
})
module.exports = redisClient;
3. app.js
const RedisStore = require('connect-redis')(session)
const redisClient = require('./db/redis')
const sessionStore = new RedisStore({
    client: redisClient
})
app.use(session({
  secret: 'Wdj#fds_95',
  resave: true,
  saveUninitialized: true,
  cookie:{
    path:'/',
    httpOnly: true,
    maxAge: 5 * 60*1000
  },
  store: sessionStore
}))
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容