node.js - redis 保存session等数据

标签 node.js session redis

如何使用redis存储session等数据?

我收到错误“myRedis 错误-> 错误:Redis 连接到 127.0.0.1:6379 失败 - 连接 ECONNREFUSED”。 如果没有 myRedis 部分,express/session/redis 运行良好。

var express = require('express');
var session = require('express-session');

// pass the express to the connect redis module
// allowing it to inherit from session.Store
var RedisStore = require('connect-redis')(session);

....
// Populates req.session
app.use(session({
  resave: false, // don't save session if unmodified
  saveUninitialized: false, // don't create session until something stored
  secret: 'keyboard cat',
  store: new RedisStore
}));

// needed for saving new data
var myRedis = require('redis');                           // additional redis store
var myRedisCli = myRedis.createClient();

myRedisCli.on('error', function (err) {
  console.log('myRedis Error-> '  + err);
});

有没有办法使用connect-redis的redis客户端?但看起来它与 session 紧密结合。

我找不到有关这种情况的信息。希望有人帮忙,谢谢!

最佳答案

在研究了 connect-redis 代码后,我终于发现可以将现有的 redis-client 传递给它。该文档提到了这一点,但没有给出示例。

以下代码有效。首先像平常一样创建一个redis客户端,然后将其传递给session。

var express = require('express');
var session = require('express-session');

var _myRedis = require('redis');                           // additional redis store
var myRedisCli = _myRedis.createClient();

// pass the express to the connect redis module
// allowing it to inherit from session.Store
var RedisStore = require('connect-redis')(session);

...

app.use(session({
  resave: false, // don't save session if unmodified
  saveUninitialized: false, // don't create session until something stored
  secret: SESSION_SECRET,
  store: new RedisStore({client: myRedisCli})
}));

关于node.js - redis 保存session等数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27616254/

相关文章:

javascript - 如何在 Sequelize 中读取表的列属性?

javascript - Node http代理: forward traffic to external https site - crashes

php - 注销不会在 FOSUserBundle 中正确销毁/清除 session

redis - 如何使用 go-redis 运行 SENTINEL slaves 命令?

redis - 开源Redis集群和Redis labs企业集群有什么区别?

c# - 如何使用带有 stackexchange.redis 库的 ZSCAN 命令获取游标和分页的结果?

node.js - 进程将二进制数据记录到日志文件

javascript - 类型错误 : Cannot read property of null

php - 在 AJAX 请求中设置 cookie?

asp.net-mvc - 如何在Web表单和MVC2应用程序之间共享基于.net(C#)的身份验证 session ?