【问题标题】:Finding key/value in redis在redis中查找键/值
【发布时间】:2014-07-30 23:45:27
【问题描述】:

我编写了一个简单的 node/express/redis 应用程序,它在 redis 中存储了一个自定义会话 ID。有用。但是作为redis的新手,我只能在redis中找到sessionID,而不是jsessionid

var sessionStore = new RedisStore({
    host: redisHost,
    port: redisPort,
    db: redisDB
});

app.use(session({
    name: 'jsessionid', // access using req.cookies['jsessionid']
    secret: 'keyboard cat',
    store: sessionStore
}));

app.get('/awesome', function(req, res) {
    if(req.session.lastPage) {
        res.write('Last page was: ' + req.session.lastPage + '. And session id was: ' + req.sessionID + '. And jsessionid is ' + req.cookies['jsessionid'] + '. ');
    }
    req.session.lastPage = '/awesome';
    res.end('Your Awesome.');
});

所以,当我执行http://localhost:3000/awesome 并重新加载它时,它会按预期打印出以下内容:

“最后一页是:/awesome。会话 id 是:kOnhpfyFQlil76eVXIbIBJTUNU7GzhDG。jsessionid 是 s:kOnhpfyFQlil76eVXIbIBJTUNU7GzhDG.KF3B6TLxMl084VI2rvYw+hz4u/wQr5IL7n+//gnH9mQ。太棒了。”

我可以通过以下方式在redis-cli 中找到 sessionID:

127.0.0.1:6379> select 2
OK
127.0.0.1:6379[2]> keys *
1) "sess:kOnhpfyFQlil76eVXIbIBJTUNU7GzhDG"

但我无法在 redis 中找到 jsessionid。我认为它应该存在于某个地方。请帮忙。

【问题讨论】:

    标签: node.js session express redis


    【解决方案1】:

    express-session 中间件的name 选项只是 cookie 的名称。您可以通过在RedisStore 配置中设置prefix 选项(默认为'sess:')来更改前缀。有关您可以设置的更多选项,请参阅here

    【讨论】:

    • 我已将 sessionID 和 jsessionid 视为同一级别,只要它们在 redis 中设置。那么,为什么 sess 前缀显示 sessionID,而不是 jsessionid ?
    • 我假设 sessionID 密钥将 jsessionid 存储在其中。尝试对 sessionID 键执行 GET 或 HGET(取决于使用的数据类型)。
    猜你喜欢
    • 2014-01-20
    • 1970-01-01
    • 1970-01-01
    • 2015-08-16
    • 2017-07-08
    • 2019-01-07
    • 2012-05-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多