如何清理Nodejs(heroku + redis)中的所有会话?

我正在使用托pipe在heroku上的nodejs(expressjs)。

会话存储在redis( heroku的Redistogo插件)中:

RedisStore = require('connect-redis')(express) app.use express.session secret: process.env.CLIENT_SECRET cookie: { maxAge: 604800000 } store: new RedisStore {client: redis} 

用户login后,我将他的信息存储在req.session中

 after_user_logged_id = (req, user)-> req.session.current_user = id: user._id name: user.name 

我需要重新启动服务器并清理所有会话:注销所有用户强制他们login一次。 我应该怎么做? 重新启动redis插件没有帮助。

redis.flushdb()可能会有点极端,如果你最终在redis中存储其他的东西。 你只需要删除所有的“sess:*”键。 不幸的是,没有del *,所以你可以使用这样的东西:

 redis.keys("sess:*", function(err, key) { redis.del(key, function(err) { }); }); 

清除所有redis会话的代码:

 RedisStore = require('connect-redis')(express) rtg = require('url').parse process.env.REDISTOGO_URL redis = require('redis').createClient rtg.port, rtg.hostname redis.auth rtg.auth.split(':')[1] # auth 1st part is username and 2nd is password separated by ":" try console.log "clean sessions" redis.flushdb() catch err console.log "error:", err