2012-03-30 20 views
3

現在、私は自分のノードredisクライアントとしてhttps://github.com/mranney/node_redisを使用しています。ノードJS Redisクライアント接続の再試行

client.retry_delayは、デフォルトで250msに設定されています。

私はredisへの接続を試みました。接続が成功すると、手動でredisサーバを停止し、client.retry_delayが動作するかどうかを確認しました。しかし、私はそれが働いているとは思わなかった。

次のログメッセージがredisClients上ready & endイベントに記録されますが、サーバーが

ライブ戻ってきたときに[readyイベントが解雇されなかった]私は再び成功メッセージが表示されませんでした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' 

を使用して作成しました

何か不足していますか?リトライ定数はいつ使用されますか?ノードから障害が発生した後に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

-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