使用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'); });
- 我缺less关于快速会话和cookie的信息?
- 使用Express.js v4和Socket.io v1进行会话
- Passport.js twitter身份validation导致500错误,req.session未定义
- 会话存储的用途是什么?
- splice()方法工作,但是数组在执行后不会改变
- Node.js / Express中session_start()和$ _SESSION的等价物
- Express.js req.sessionvariables不通过不同的路由存储会话variables
- 连接+ SessionSocket.io +护照:无法通过密钥查找会话
- saveUninitialized和resave有什么区别?