express中redis的简单实用方法

875 阅读1分钟

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
}));