2012-03-30 170 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