一、session直接是js变量,放在nodejs进程内存中的问题
- 进程内容有限,访问量过大,会导致内存暴增
- 正式线上运行是多线程,进程之间内存无法共享
解决方案:redis - session 访问频繁,对性能要求极高
- session可不考虑断电丢失数据的问题
- session数据量不会太大
二、redis
- 安装 npm i redis connect-redis -S
- 配置 和 启动方式: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
}))
网友评论