この記事では、Redis に関する関連知識を提供します。主にパブリッシュとサブスクライブに関連する問題を紹介します。Redis のパブリッシュとサブスクライブ (pub/sub) はメッセージ通信モードです: 送信 パブリッシャー (パブリッシャー) は送信します。メッセージを受信し、サブスクライバー (サブスクライバー) がメッセージを受信します。
推奨される学習: Redis ビデオ チュートリアル
Redis のパブリッシュとサブスクライブ (パブリッシュ/サブスクライブ) は メッセージ通信モデルです: 送信者 (パブ) がメッセージを送信し、サブスクライバー (サブ) がメッセージを受信します。
Redis クライアントは、任意の数のチャネルにサブスクライブできます。
メッセージ グラフのサブスクライブ/パブリッシュ:
最初のオブジェクト: メッセージ送信者。 2 番目のオブジェクト: チャネル。 3 番目のオブジェクト: メッセージ購読者。
#次の図は、チャネル channel1 と、このチャネルにサブスクライブする 3 つのクライアント (client2、client5、client1) との関係を示しています。 新しいメッセージが PUBLISH コマンドを通じてチャネル channel1 に送信されると、このメッセージはそのメッセージをサブスクライブしている 3 つのクライアントに送信されます。
説明 | |
---|---|
指定されたチャンネルにメッセージを送信します。 | |
1 つ以上の指定されたチャネルの情報を購読します。 | |
は、指定されたチャンネルからの登録を解除することを指します。 | |
指定されたパターンのすべてのチャネルからのサブスクライブを解除します。 | |
サブスクリプションと公開システムのステータスを表示します。 | |
指定されたパターンに一致する 1 つ以上のチャネルをサブスクライブします。 |
サブスクライバ:
127.0.0.1:6379> subscribe mianbao # 订阅频道 mianbao Reading messages... (press Ctrl-C to quit) 1) "subscribe" 2) "mianbao" 3) (integer) 1 # 等待读取推送的消息 1) "message" # 消息 2) "mianbao" # 频道 3) "hello" # 消息内容 1) "message" 2) "mianbao" 3) "hello redis"
送信者:
127.0.0.1:6379> publish mianbao "hello" # 发送消息到频道 (integer) 1 127.0.0.1:6379> publish mianbao "hello redis" (integer) 1
原則:
Redis は、PUBLISH、SUBSCRIBE、PSUBSCRIBE などのコマンドを通じてパブリッシュおよびサブスクライブ機能を実装します。
SUBSCRIBE コマンドを使用してチャネルにサブスクライブした後、ディクショナリは redis-server に維持されます。ディクショナリのキーはチャネルであり、ディクショナリの値はリンク リストです。すべてのサブスクリプションはリンクされたリスト: チャネルのクライアント。 SUBSCRIBE コマンドの重要な点は、指定されたチャネルのサブスクリプション リストにクライアントを追加することです。
PUBLISH コマンドを使用してサブスクライバーにメッセージを送信します。redis サーバーは、指定されたチャネルをキーとして使用し、保持しているチャネル ディクショナリでこのチャネルにサブスクライブしているすべてのクライアントのリンク リストを検索します。リンクされたリストを走査し、すべての購読者にメッセージを公開します。
Pub/Sub は文字通り、パブリッシュ (Publish) とサブスクリプション (Subscribe) を意味します。Redis では、特定のキー値に対してメッセージのパブリッシュとメッセージのサブスクリプションを設定できます。キー値が使用される場合、メッセージが送信された後、公開されると、それを購読するすべてのクライアントが対応するメッセージを受信します。この機能の最もわかりやすい用途は、通常のインスタント チャット、グループ チャット、その他の機能などのリアルタイム メッセージング システムとしての使用です。
推奨学習:
Redis ビデオ チュートリアル以上がRedis 研究ノートの公開と購読の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。