【发布时间】:2014-02-20 11:01:31
【问题描述】:
我正在尝试使用 connect-redis 来利用基于 Redis 的会话存储,通过 UNIX 域套接字进行通信。
有这个:Redis Connection via socket on Node.js 但答案是特定于 node-redis,而不是 connect-redis 用于 Redis 会话存储。
我认为通过使用并传入 'client' 参数创建我自己的 node-redis 对象会很容易让事情顺利进行,如 ' README 的选项部分在这里:https://github.com/visionmedia/connect-redis
但是,当我这样做时,req.session 参数永远不会在 Express 应用程序上设置。
var Redis = require('redis');
var RedisStore = require('connect-redis')(express);
var redis = Redis.createClient(config['redis']['socket']);
还有会话组件:
app.use(express.session({
store: new RedisStore({client: redis})
}));
我错过了什么吗?
【问题讨论】:
-
您在
express.cookieParser()中链接了吗?没有它,会话将无法工作(必须有某种方法来存储会话 ID,通常在 cookie 中) -
是的。道歉;我将所有内容简化为我认为适用的内容。如果你从 RedisStore 中删除“client:redis”,我实际上有一个工作设置。
-
此外,“redis-cli -s /tmp/redis.sock”确实有效,尽管我第一次尝试时遇到了文件系统权限问题。修复这些没有帮助。
-
(点头)只是检查...Express 中间件文档并不总是能很好地指定依赖关系。好吧,一切看起来都是对的,恐怕我现在没有时间深入研究它......我稍后会尝试回到这个问题。
标签: node.js session express redis unix-socket