パブリッシュおよびサブスクライブモードのRedisシンプルな実装

パブリッシュ/サブスクライブモデル-パブリッシャーとサブスクライバーには2つの役割があります。これらはチャネルを介して通信します。サブスクライバーは1つ以上のチャネルにサブスクライブし、パブリッシャーは指定されたチャネルにメッセージを送信します。その後、チャネルにサブスクライブするすべてのユーザー購読者はメッセージを受け取ります。

パブリッシャーは、次のコマンドを使用してメッセージをチャネルにパブリッシュします。

 PUBLISH channel message

サブスクライバーは、次のコマンドを使用してチャネルをサブスクライブします。

SUBSCRIBE channel [channel …]

次のように、redisサービスを開始し、3つのredis-cliインスタンスを開き、次に1つのパブリッシャー、2つのサブスクライバー、サブスクライバー1が2つのチャネルchannel:1およびchannel:2にサブスクライブし、サブスクライバー2がchannel:2チャネルにサブスクライブします。ここに画像の説明を挿入
まず、チャンネル登録者がチャンネルに登録すると、結果が返されることがわかります。

ここでは、最初に結果を返すための説明を示します。返される結果のタイプは、それぞれ3つの値を含む3つのタイプに大別されます。ここでのタイプはサブスクリプションです。上の図で返される結果を参照してください。

第一个值表示消息的类型,这里是订阅,所以值为subscribe。
第二个值根据消息类型的不同,表示的意思也不同,这里表示订阅成功的频道名称。
第三个值是当前客户端订阅的频道数量,所以订阅者1才会返回2,因为它订阅了两个频道。

パブリッシャーはchannel:1チャネルにメッセージパブリッシュし、次のようにサブスクライバーの応答を確認します。
ここに画像の説明を挿入

サブスクライバーは1つのメッセージが返されることを検出し、サブスクライバー2はいいえ、これはサブスクライバーが2 チャネルをサブスクライブしていないためです:1チャネル、パブリッシャーチャネルを許可するには:2チャネルはサブスクライバーの反応を次のように発表しました:ここに画像の説明を挿入
この時点で最初に、パブリッシャーを見てください。以前はchannel:1にメッセージをパブリッシュすると、結果1が返されました。今回は、channel:2にメッセージをパブリッシュすると、結果2が返されました。2つのチャネルのサブスクライバーの数を考えると、結果は、このメッセージを受信したサブスクライバーの数を表します。

パブリッシャーによってchannel:2にパブリッシュされたメッセージは、サブスクライバー1とサブスクライバー2の両方で受信できることがわかります。返される結果については、上の図を参照してください。

第一个值表示消息的类型,这里表示接收到的消息,所以值为message。
第二个值根据消息类型的不同,表示的意思也不同,这里表示产生消息的频道名称。
第三个值表示消息的内容。

定期購入ができれば自然に解約できます解約の流れは以下のとおりです。

UNSUBSCRIBE [channel [channel …]]

如果不指定具体的频道参数,那就会取消对所有频道的订阅。

ただし、redis-cliの制限により、このコマンドは効果をテストできないため、返された結果の3つの値の意味について簡単に説明します。

第一个值表示成功取消订阅某个频道。
第二个值表示对应的频道名称。
第三个值表示当前客户端订阅的频道数量,一旦这个值变为0,客户端就会退出订阅状态。

PS:サブスクリプションのステータスは何ですか?

クライアントが特定のチャネルにサブスクライブすると、サブスクリプション状態になります。サブスクリプション状態のクライアントは、SUBSCRIBE、UNSUBSCRIBE、PSUBSCRIBE、PUNSUBSCRIBEの「パブリッシュ/サブスクライブ」モードに属する4つのコマンドのみを使用でき、その他のコマンドを使用できます。コマンドはエラーを報告します。

おすすめ

転載: blog.csdn.net/weixin_38106322/article/details/108543069