1

切断時に Redis サーバーに再接続しようとしています。

私は redisAsyncConnect を使用しており、切断時にコールバックを設定しました。コールバックでは、プログラムの開始時に接続を確立するために使用したのと同じコマンドで再接続しようとしましたが、機能していません。再接続できないようです。

誰かが例を手伝ってくれますか?

4

1 に答える 1

3

イベントループを使用する場合、Redis(再)接続を非同期で管理するのは少し注意が必要です。

これは、Redisインスタンスのリストに接続する小さなzsetポーリングデーモンを実装する例です。これは、切断イベントに対して回復力があります。aeイベントループが使用されます(Redis自体が使用するループです)。

http://gist.github.com/4149768

次の機能を確認してください。

  • connectCallback
  • 切断コールバック
  • checkConnections
  • reconnectIfNeeded

メインデーモンループは、接続が利用可能な場合にのみアクティビティを実行します。1秒に1回、2回目に開始されるコールバックは、一部の接続を再確立する必要があるかどうかを確認します。このメカニズムは非常に信頼できることがわかりました。

注:この例では、簡潔にするためにエラー管理は大雑把です。実際の本番コードは、より適切な方法でエラーを管理する必要があります。

複数の非同期接続を処理する際の注意点の1つは、対応するコールバックのパラメーターとして渡されるユーザー定義のコンテキストデータがないという事実です。切断イベント後に接続に関連付けられたデータをクリーンアップするのは少し難しい場合があります。

于 2012-11-26T19:17:05.047 に答える