【问题标题】:redis to save session and other dataredis 保存会话和其他数据
【发布时间】:2015-02-21 08:28:23
【问题描述】:

如何使用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 紧密结合。

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

【问题讨论】:

  • 您是否能够验证 Redis 服务已启动并在 localhost 上运行并正在侦听端口 6379?

标签: node.js session redis


【解决方案1】:

查看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})
}));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-10
    • 1970-01-01
    • 2012-05-20
    • 2022-08-15
    • 1970-01-01
    • 2018-02-10
    • 1970-01-01
    相关资源
    最近更新 更多