StackExchange.Redisノート-イベント

3338 ワード

ConnectionMultiplexerタイプでは、複数のイベントが公開されています。

  • ConfigurationChanged ConnectionMultiplexerの接続構成が変更されると
  • がトリガーされます.
  • C o n f i g u rationChangedBroadcastがパブリッシュ/サブスクリプション機能によって再構成されたメッセージを受信したとき.これは通常IServerを用いるためである.MakeMasterは、ノードのレプリケーション構成を変更したり、すべてのクライアントにリクエストをブロードキャストしたりすることができます.
  • ConnectionFailed接続に失敗した場合.注意:接続が再確立されるまで、接続についてConnectionFailedの通知は受信されません.
  • ConnectionRestored接続が以前に失敗したノードに再確立されたとき
  • ErrorMessageユーザが要求したとき、Redisサーバはエラーメッセージの応答を与える.これは、通常の例外/障害に加えて、呼び出し元に直ちに報告されます.
  • HashSlotMoved「Redisクラスタ」がhash-slotがノード間に移行したことを示す場合、要求は通常自動的に再ルーティングされるので、ユーザはここで指定されたことを要求しないことに注意してください.
  • InternalError Redisクラスライブラリの内部実行に予期せぬ失敗が発生した場合.これは主にデバッグに使用されるため、ほとんどのユーザーはこのイベントを必要としないはずです.

  • 注意:StackExchange.Redis実装のpub/sub動作原理はイベントに類似しており,Subscribe/SubscribeAsyncはActionを受け入れる

            ConnectionMultiplexer conn = GetConnection();
                conn.ConfigurationChanged += (object sender, EndPointEventArgs e) =>
                {
                    Console.WriteLine(" ");
                };
                conn.ConfigurationChangedBroadcast += (object sender, EndPointEventArgs e) =>
                {
                    Console.WriteLine(" ");
                };
                conn.ConnectionFailed += (object sender, ConnectionFailedEventArgs e) =>
                {
                    Console.WriteLine("  ,  ");
                };
                conn.ConnectionRestored += (object sender, ConnectionFailedEventArgs e) =>
                {
                    Console.WriteLine(" ");
                };
                conn.ErrorMessage += (object sender, RedisErrorEventArgs e) =>
                {
                    Console.WriteLine(" ");
                };
                conn.HashSlotMoved += (object sender, HashSlotMovedEventArgs e) =>
                {
                    Console.WriteLine(" ");
                };
                conn.InternalError += (object sender, InternalErrorEventArgs e) =>
                {
                    Console.WriteLine("redis ");
                };
    

    key失効イベントリスニング:(テストなし)

  • イベントはRedisの購読と配布機能(pub/sub)によって配布されるため、購読が必要であるkeyevent@0:expiredチャネル0は、db 0が自分のdbindexに基づいて適切な数字
  • を選択することを示す.
  • redisを修正する.confファイル、修正notify-keyspace-events Ex
  • notify-keyspace-events:
    Kキー空間通知、_keyspace@ __接頭辞Eキーイベント通知のために_keysevent@ __接頭辞g del,expipre,renameなどのタイプに関係のない汎用コマンドの通知,...$Stringコマンドl Listコマンドs Setコマンドh Hashコマンドz整列集合コマンドx期限切れイベント(keyが期限切れになるたびに生成される)e駆逐イベント(keyがメモリがいっぱいになったときに生成される)A g$lshzxeの別名であるため、「AKE」はすべてのイベントを意味する
  • redisを再起動すると、失効イベントのトリガをテストすることができ、傍受取得値はkey
  • である.
    ConnectionMultiplexer conn1 = GetConnection();
                ISubscriber subscriber = conn1.GetSubscriber();
                subscriber.Subscribe("__keyspace@0__:*", (channel, notificationType) =>
                {
                    Debug.WriteLine(channel + "|" + notificationType);
                });
                subscriber.Subscribe("__keyevent@0__:expired", (channel, notificationType) =>
                {
                    Debug.WriteLine(channel + "|" + notificationType);
                });