Redis パブリッシュ/サブスクライブ
Redis のパブリッシュ/サブスクライブ (pub/sub) はメッセージ通信モードの一種です。送信者 (pub) がメッセージを送信し、購読者 (sub) がメッセージを受信します。
Redis クライアントは任意の数のチャンネルを購読できます。
下図は、チャンネル channel1 と、このチャンネルを購読している3つのクライアント(client2、client5、client1)との関係を示しています:
PUBLISH コマンドでチャンネル channel1 に新しいメッセージが送信されると、そのメッセージは購読している3つのクライアントに送信されます:
例
以下の例では、パブリッシュ/サブスクライブの仕組みを説明しています。2つの redis-cli クライアントを起動する必要があります。
この例では、次の名前の購読チャンネルを作成しました:サンプルChat:
1つ目の redis-cli クライアント
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "サンプルChat"
3) (integer) 1
次に、別の redis クライアントを起動し、同じチャンネル サンプルChat に2回メッセージを公開します。購読者はメッセージを受信できます。
2つ目の redis-cli クライアント
(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 パブリッシュ/サブスクライブのよく使われるコマンドを示します:
| 番号 | コマンドと説明 |
|---|---|
| 1 | PSUBSCRIBE pattern [pattern ...] 指定したパターンに一致する1つ以上のチャンネルを購読します。 |
| 2 | PUBSUB subcommand [argument [argument ...]] 購読とパブリッシュのシステム状態を表示します。 |
| 3 | PUBLISH channel message 指定したチャンネルにメッセージを送信します。 |
| 4 | PUNSUBSCRIBE [pattern [pattern ...]] 指定したパターンに一致するすべてのチャンネルの購読を解除します。 |
| 5 | SUBSCRIBE channel [channel ...] 指定した1つ以上のチャンネルの情報を購読します。 |
| 6 | UNSUBSCRIBE [channel [channel ...]] 指定したチャンネルの購読を解除します。 |