1

有问题的代码:app.js

var redis = require('redis');
var redisClient = redis.createClient();
redisClient.on('error', function (err) {
  console.error('There was an Error ' + err);
});

// do stuff

redisClient.quit(function(err, res) {
  console.log('closing redis client.');
});

我正在尝试使用node_redis从我的 node.js 应用程序连接到 Redis。但是,我不太确定如何处理 Redis 宕机的情况。

我有一堆client.on('error', function(err) {})'s 但他们似乎从未被调用过。这是处理它的正确方法吗?我叫错了吗?

我刚开始使用redis/node/express,所以请原谅我的无知。

编辑正如 Vadim 帮助我意识到的那样,似乎我实际上client.on('error')在 app.js 中正确地捕捉到了错误。但是,当 redis 关闭时,我的路由无法捕获错误。

4

2 回答 2

0

我认为这个end事件是你需要的。

当已建立的 Redis 服务器连接关闭时,客户端将发出结束信号。

更新:

如果您使用的是 node.js >= 0.8.0,您可以使用域模块功能来捕获异步代码中的错误。

您可以将connect-domain模块用于您的 express/connect 应用程序。它允许您在异步代码中抛出错误并使用错误处理程序捕获它。

于 2012-09-06T00:35:04.817 回答
0

由于 node_redis 是异步的,因此redisClient.on('error')在我开始向redisClient.

我解决此问题的方法是将“成功”代码放入redisClient.on('connect')处理程序中,该处理程序仅在 redisClient 成功连接后调用。我的后备代码在redisClient.on('error').

你可以在这个 github changeset中看到更多关于我如何解决这个问题的信息。

于 2012-09-06T04:24:20.790 回答