相关代码: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) {})
,但它们似乎从未被调用。这是处理它的正确方法吗?我是不是说错了?
我刚刚开始使用redis/node/express,所以请原谅我的无知。
编辑 正如 Vadim 帮助我意识到的那样,我似乎实际上在 app.js 中使用 client.on('error')
正确捕获了错误。然而,它是my routes当redis宕机时无法捕获错误。
由于 node_redis 是异步的,因此在我开始向 redisClient
发送其他命令之前,没有及时调用 redisClient.on('error')
回调。
我解决此问题的方法是将“成功”代码放入 redisClient.on('connect')
处理程序中,该处理程序仅在 redisClient 成功连接后才会被调用。我的后备代码位于 redisClient.on('error')
中。
您可以查看有关我如何解决此问题的更多信息 in this github changeset .
我是一名优秀的程序员,十分优秀!