express中使用redis
--- 前提是有安装redis 并开启redis
在express中使用redis能够比较好的管理数据,并且如果这个数据不止一台服务器用的话可以考虑用数据库存储,因为存在内存中其他服务器很难获得。
redis配置
在生产环境中和开发环境中使用的redis可能不一样,所以可以写两个配置方便切换,在启动服务的时候指定NODE_ENV,可以在程序里面自动选择相应的配置,让代码可读性更强。指定和读取NODE_ENV的过程中会使用到cross-env,它是运行跨平台设置和使用环境变量(Node中的环境变量)的脚本。
let env = process.env.NODE_ENV;//使用cross-env
let MYSQL_CONF;
let REDIS_CONF;
// console.dir(process.env.NODE_ENV)
if (env === 'dev') {
//MYSQL
MYSQL_CONF = {
host: 'localhost',
user: 'xxxx',
password: 'xxxx',
port: '3306',
database: 'myblog'
}
//REDIS
REDIS_CONF={
port:6379,
host:'127.0.0.1'
}
}
if (env==='production'){
MYSQL_CONF = {
host: 'localhost',
user: 'xxxx',
password: 'xxxx',
port: '3306',
database: 'myblog'
}
REDIS_CONF={
port:6379,
host:'127.0.0.1'
}
}
module.exports={
MYSQL_CONF,
REDIS_CONF
}
连接redis
const redis = require('redis');
const {REDIS_CONF} =require('../conf/db');
const redisClient = redis.createClient(REDIS_CONF.port,REDIS_CONF.host);
redisClient.on('error',(err)=>{
console.error(err)
})
console.log(__filename,'redis connect successfully');
module.exports=redisClient;
使用redis
const session = require('express-session');
const redisClient = require('./db/redis');
const RedisStore = require('connect-redis')(session);
const sessionStore = new RedisStore({
client:redisClient
})
`你的代码`
app.use(session({
resave: false, //添加 resave 选项
saveUninitialized: true, //添加 saveUninitialized 选项
secret: 'Wasb123.',
cookie: {
path: '/',//默认配置
httpOnly: true,//默认配置
max: 24 * 60 * 60 * 1000
},
store:sessionStore //使用redis存储session
}));