2012-03-30 135 views
3

目前我正在使用https://github.com/mranney/node_redis作为我的节点redis客户端。Node JS Redis客户端连接重试

client.retry_delay默认设置为250ms。

我试着连接到redis,一旦连接成功,我手动停止了redis服务器,看client.retry_delay是否有效。但我没有看到它的工作。

以下日志消息记录上redisClients ready & end事件使用createClient

创建
[2012-03-30 15:13:05.498] [INFO] Development - Node Application is running on port 8090 
[2012-03-30 15:13:08.507] [INFO] Development - Connection Successfully Established to '127.0.0.1' '6379' 
[2012-03-30 15:16:33.886] [FATAL] Development - Connection Terminated to '127.0.0.1' '6379' 

我再也没有见到成功的消息[ready事件没有被解雇,当服务器回来住

我错过了什么吗?什么时候会使用重试常量?是否有解决方法来查找在节点发生故障后是否启动了redis服务器?

回答

9

我不能重现这一点。你可以试试这个代码,停止你的redis服务器,并检查日志输出?

var client = require('redis').createClient(); 

client.on('connect'  , log('connect')); 
client.on('ready'  , log('ready')); 
client.on('reconnecting', log('reconnecting')); 
client.on('error'  , log('error')); 
client.on('end'   , log('end')); 

function log(type) { 
    return function() { 
     console.log(type, arguments); 
    } 
} 
+0

我发现这个问题,我没有处理错误事件。现在它像一个魅力。感谢代码:) – Tamil 2012-03-30 11:33:32

-3

添加到上面的答案。小变化。提供的回调应该是方法名称,而不是执行方法本身。像下面这样:

function redisCallbackHandler(message){ 
    console.log("Redis:"+ message); 
} 

var redis = require("redis"); 
var redisclient = redis.createClient(); 
redisclient.on('connect', redisCallbackHandler); 
redisclient.on('ready', redisCallbackHandler); 
redisclient.on('reconnecting', redisCallbackHandler); 
redisclient.on('error', redisCallbackHandler); 
redisclient.on('end', redisCallbackHandler); 
+0

检查上面的日志函数..它有作为它的返回值的函数..它被用作回调参考 – Tamil 2013-08-19 06:32:14