使用RedisStore时,有什么方法可以查看当前会话吗?

在意识到Express会话不好之后,我开始使用Redis来存储用户会话。

我是这样做的:

var session = require('express-session'); if (process.env.REDISTOGO_URL) { var rtg = require("url").parse(process.env.REDISTOGO_URL); var redis = require("redis").createClient(rtg.port, rtg.hostname); redis.auth(rtg.auth.split(":")[1]); } else { var redis = require("redis").createClient(); } var RedisStore = require('connect-redis')(session); var redisOptions = {client: redis}; app.use(session({ store: new RedisStore(redisOptions), secret: 'honkydory', name: 'honk' })); 

我的问题是,有没有办法让我在运行Redis数据库的时候浏览一下? 我希望能够监视是否有用户login和他们是哪些用户。 另外我想确保它正在创build和维护会话。

谢谢!

您可以使用SCAN获取会话密钥列表,然后遍历这些密钥,如果您需要拉入会话数据。

例如(未经testing):

 function getSessions(cb) { var keys = []; var cursor = 0; (function next(err, reply) { if (err) return cb(err); if (reply) { cursor = reply[0]; if (reply[1].length > 0) keys = keys.concat(reply[1]); if (cursor == 0) return cb(null, keys); } redis.scan(cursor, 'match sess:*', next); })(); } // ... getSessions(function(err, keys) { if (err) throw err; if (keys.length) { redis.mget(keys, function(err, sessionDatas) { if (err) throw err; // keys[0] matches with sessionDatas[0], etc. }); } else console.log('No sessions'); });