Redis パブリッシュ/サブスクライブ

Redis のパブリッシュ/サブスクライブ (pub/sub) はメッセージ通信モードの一種です。送信者 (pub) がメッセージを送信し、購読者 (sub) がメッセージを受信します。

Redis クライアントは任意の数のチャンネルを購読できます。

下図は、チャンネル channel1 と、このチャンネルを購読している3つのクライアント(client2、client5、client1)との関係を示しています:

PUBLISH コマンドでチャンネル channel1 に新しいメッセージが送信されると、そのメッセージは購読している3つのクライアントに送信されます:


例

以下の例では、パブリッシュ/サブスクライブの仕組みを説明しています。2つの redis-cli クライアントを起動する必要があります。

この例では、次の名前の購読チャンネルを作成しました:サンプルChat:

1つ目の redis-cli クライアント

redis 127.0.0.1:6379> SUBSCRIBE サンプルChat

Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "サンプルChat"
3) (integer) 1

次に、別の redis クライアントを起動し、同じチャンネル サンプルChat に2回メッセージを公開します。購読者はメッセージを受信できます。

2つ目の redis-cli クライアント

redis 127.0.0.1:6379> PUBLISH サンプルChat "Redis PUBLISH test"

(integer) 1

redis 127.0.0.1:6379> PUBLISH サンプルChat "Learn redis by example.com"

(integer) 1

# 購読者のクライアントには以下のメッセージが表示されます
 1) "message"
2) "サンプルChat"
3) "Redis PUBLISH test"
 1) "message"
2) "サンプルChat"
3) "Learn redis by example.com"

gif デモは次のとおりです:

  • ローカルの Redis サービスを起動し、2つの redis-cli クライアントを起動します。

  • に1つ目の redis-cli クライアント入力:SUBSCRIBE サンプルChatこれは購読を意味しますサンプルChatチャンネル。

  • に2つ目の redis-cli クライアント入力:PUBLISH サンプルChat "Redis PUBLISH test"サンプルChat チャンネルにメッセージを送信すると、1つ目の redis-cli クライアントに2つ目の redis-cli クライアントから送信されたテストメッセージが表示されます。


Redis パブリッシュ/サブスクライブコマンド

次の表に、Redis パブリッシュ/サブスクライブのよく使われるコマンドを示します:

番号コマンドと説明
1PSUBSCRIBE pattern [pattern ...]
指定したパターンに一致する1つ以上のチャンネルを購読します。
2PUBSUB subcommand [argument [argument ...]]
購読とパブリッシュのシステム状態を表示します。
3PUBLISH channel message
指定したチャンネルにメッセージを送信します。
4PUNSUBSCRIBE [pattern [pattern ...]]
指定したパターンに一致するすべてのチャンネルの購読を解除します。
5SUBSCRIBE channel [channel ...]
指定した1つ以上のチャンネルの情報を購読します。
6UNSUBSCRIBE [channel [channel ...]]
指定したチャンネルの購読を解除します。
その他の拡張