数据库断开连接时如何处理Redis会话

时间:2013-12-04 16:26:19

标签: javascript node.js session express redis

我遇到了丢失我用于Express App中会话的Redis连接的问题:

var RedisStore = require('connect-redis')(express);
sessionStore = new RedisStore(config.db.redis.connection);
sessionStore.client.on('error', function(err){
  console.log("Redis error " + err);
});

app.use(express.session({
  secret: config.secret,
  maxAge: new Date(Date.now() + 3600000),
  store: sessionStore
}));

当它下降时,由于会话不再可用,因此该网站也是如此。我正在考虑回退到memoryStore或辅助数据库但是我想在我再次重新连接之前使用该回退(我并不过分担心会话丢失 - 只是不希望网站出现繁荣) 。

我该怎么做?现有的插件很棒但到目前为止还没有找到任何东西。

2 个答案:

答案 0 :(得分:0)

您是否尝试过使用复制主从选项?如果主机发生故障,则切换到从机,当主机指向上机时,指向主机。

您的应用程序应该检查主连接,如果它已关闭,它应该从slave获取数据并恢复服务。

您可以让奴隶在同一台服务器或其他任何地方运行。

答案 1 :(得分:-2)

Redis作为最可靠的数据存储之一而享有盛誉。我建议修复你的Redis,而不是试图设计失败转移解决方案。或者,使用像Redistogo这样的托管服务,每月7美元,停机时间几乎为零。