我已将本地计算机(本地存储)和Elastic Beanstalk实例(Elasticache)上的Expressjs会话存储替换为Redis。我对平台没有最丰富的经验,但了解一般命令,最重要的是如何清除密钥。我更熟悉关键许可的原因是因为我遇到了一些常见问题,其中缓存的redis会话阻止我在重新部署到弹性beanstalk或db修改到我的本地环境时登录到我的应用程序。
我经常遇到的本地环境场景是在用户登录时截断我的本地数据库并且有会话(通过passportjs进行身份验证),这会强制我重新登录,但由于缓存而引发错误Redis会话仍然存在
我遇到的弹性beanstalk(eb)场景是当我将本地更改部署到我的eb实例时,我强制重新登录到我的应用程序,但是存在缓存的Redis会话。
我的问题是,防止这些缓存问题在本地和eb发生的最佳方法是什么?我的会话代码有一些修改会阻止它吗?我是否应该调整我的eb部署配置文件以清除每次部署?什么是Redis最佳实践。
以下是我的redis会话存储代码:
var express = require('express');
var app = express();
var session = require('express-session');
var RedisStore = require('connect-redis')(session);
app.use(session({
store: new RedisStore({
host: process.env.REDIS_ENDPOINT || 'localhost',
port: 6379
}),
secret: '**super-secret**',
resave: true,
saveUninitialized: true,
cookie: {
httpOnly: true,
secure: false //turn to true on production once https is in place
}
}));
我只会从我的应用程序中删除/ logout上的会话:
appRoutes.get('/logout', function(req, res){
req.session.destroy();
req.logout();
console.log('User logged out');
res.redirect('/');
});