ホームページ  >  記事  >  データベース  >  Redis 研究ノートの公開と購読

Redis 研究ノートの公開と購読

WBOY
WBOY転載
2022-06-17 13:56:281905ブラウズ

この記事では、Redis に関する関連知識を提供します。主にパブリッシュとサブスクライブに関連する問題を紹介します。Redis のパブリッシュとサブスクライブ (pub/sub) はメッセージ通信モードです: 送信 パブリッシャー (パブリッシャー) は送信します。メッセージを受信し、サブスクライバー (サブスクライバー) がメッセージを受信します。

Redis 研究ノートの公開と購読

推奨される学習: Redis ビデオ チュートリアル

Redis のパブリッシュとサブスクライブ (パブリッシュ/サブスクライブ) は メッセージ通信モデルです: 送信者 (パブ) がメッセージを送信し、サブスクライバー (サブ) がメッセージを受信します。

Redis クライアントは、任意の数のチャネルにサブスクライブできます。

メッセージ グラフのサブスクライブ/パブリッシュ:

最初のオブジェクト: メッセージ送信者。 2 番目のオブジェクト: チャネル。 3 番目のオブジェクト: メッセージ購読者。

Redis 研究ノートの公開と購読

#次の図は、チャネル channel1 と、このチャネルにサブスクライブする 3 つのクライアント (client2、client5、client1) との関係を示しています。

Redis 研究ノートの公開と購読

新しいメッセージが PUBLISH コマンドを通じてチャネル channel1 に送信されると、このメッセージはそのメッセージをサブスクライブしている 3 つのクライアントに送信されます。

Redis 研究ノートの公開と購読

#コマンドチャンネル メッセージの公開 コマンドSUBSCRIBE channel [channel …]UNSUBSCRIBE チャンネル [チャンネル …][PUNSUBSCRIBE パターン [パターン ...]][PUBSUB 引数 [引数 …]PSUBSCRIBE パターン [パターン ...]
説明
指定されたチャンネルにメッセージを送信します。
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 は C を使用して実装されています。Redis ソース コードの pubsub.c ファイルを分析することで、パブリッシュおよびサブスクリプション メカニズムの基礎となる実装を理解し、Redis についての理解を深めることができます。

Redis は、PUBLISH、SUBSCRIBE、PSUBSCRIBE などのコマンドを通じてパブリッシュおよびサブスクライブ機能を実装します。

SUBSCRIBE コマンドを使用してチャネルにサブスクライブした後、ディクショナリは redis-server に維持されます。ディクショナリのキーはチャネルであり、ディクショナリの値はリンク リストです。すべてのサブスクリプションはリンクされたリスト: チャネルのクライアント。 SUBSCRIBE コマンドの重要な点は、指定されたチャネルのサブスクリプション リストにクライアントを追加することです。

PUBLISH コマンドを使用してサブスクライバーにメッセージを送信します。redis サーバーは、指定されたチャネルをキーとして使用し、保持しているチャネル ディクショナリでこのチャネルにサブスクライブしているすべてのクライアントのリンク リストを検索します。リンクされたリストを走査し、すべての購読者にメッセージを公開します。

Pub/Sub は文字通り、パブリッシュ (Publish) とサブスクリプション (Subscribe) を意味します。Redis では、特定のキー値に対してメッセージのパブリッシュとメッセージのサブスクリプションを設定できます。キー値が使用される場合、メッセージが送信された後、公開されると、それを購読するすべてのクライアントが対応するメッセージを受信します。この機能の最もわかりやすい用途は、通常のインスタント チャット、グループ チャット、その他の機能などのリアルタイム メッセージング システムとしての使用です。


もう少し複雑なシナリオでは、メッセージ ミドルウェアを使用します: RabbitMQ、RocketMQ、ActiveMQ、kafka

推奨学習:

Redis ビデオ チュートリアル

以上がRedis 研究ノートの公開と購読の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。