相关代码: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')
正确捕获错误。但是,当redis关闭时,my routes无法捕获错误。
答案 0 :(得分:0)
我认为end
事件就是您所需要的。
当已建立的Redis服务器连接关闭时,客户端将发出结束。
<强>更新强>
如果您使用的是node.js&gt; = 0.8.0,则可以使用domain module功能捕获异步代码中的错误。
您可以将connect-domain模块用于Express / connect应用程序。它允许您在异步代码中抛出错误并使用错误处理程序捕获它。
答案 1 :(得分:0)
由于node_redis是异步的,因此在我开始向redisClient.on('error')
发送其他命令之前,没有及时调用redisClient
回调。
我解决这个问题的方法是在redisClient.on('connect')
处理程序中加入“成功”代码,只有在redisClient成功连接后才能调用。我的后备代码在redisClient.on('error')
。
您可以详细了解我如何修复此问题in this github changeset。