はじめに
この実験では、Redis の Pub/Sub メッセージングシステムを探求します。チャンネルへの購読方法、メッセージの発行方法、購読解除方法を学びます。この実験では、SUBSCRIBE、PUBLISH、UNSUBSCRIBE、PSUBSCRIBE コマンドを使用した基本的な操作をガイドします。
この実験では、Redis の Pub/Sub メッセージングシステムを探求します。チャンネルへの購読方法、メッセージの発行方法、購読解除方法を学びます。この実験では、SUBSCRIBE、PUBLISH、UNSUBSCRIBE、PSUBSCRIBE コマンドを使用した基本的な操作をガイドします。
このステップでは、SUBSCRIBE コマンドを使用して Redis のチャンネルに購読する方法を学びます。チャンネルに購読することで、そのチャンネルに発行されたメッセージを受信できるようになります。これは Redis の Pub/Sub メッセージングシステムにおける基本的な概念です。
最初のターミナル(ここでは ターミナル 1 と呼びます)を開きます。LabEx 環境で提供されている Xfce ターミナルを使用できます。
redis-cli コマンドを使用して Redis サーバーに接続します。
redis-cli
Redis プロンプト 127.0.0.1:6379> が表示されるはずです。
SUBSCRIBE コマンドを使用して mychannel という名前のチャンネルに購読します。
SUBSCRIBE mychannel
出力は以下のようになります。
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "mychannel"
3) (integer) 1
出力の内訳を見てみましょう。
"subscribe": チャンネルへの購読が成功したことを示します。"mychannel": 購読したチャンネルの名前です。(integer) 1: 現在購読しているチャンネルの数です。重要: Redis プロンプトがアクティブでチャンネルに購読された状態のまま、ターミナル 1 を開いたままにしておいてください。このターミナルを閉じたり Ctrl+C を押したりしないでください。そうするとチャンネルから購読解除されてしまいます。次のステップでメッセージを発行するために、別のターミナルを使用します。
このステップでは、PUBLISH コマンドを使用して Redis のチャンネルにメッセージを発行する方法を学びます。メッセージの発行は Pub/Sub システムの中核的な機能であり、特定のチャンネルのすべての購読者にデータを送信することを可能にします。
2 番目のターミナル(ここでは ターミナル 2 と呼びます)を開きます。Xfce ターミナルの新しいタブを開くことができます。
redis-cli コマンドを使用して Redis サーバーに接続します。
redis-cli
Redis プロンプト 127.0.0.1:6379> が表示されるはずです。
次に、PUBLISH コマンドを使用して mychannel チャンネルにメッセージを発行します。
PUBLISH mychannel "Hello, Redis!"
ターミナル 2 の出力は、メッセージを受信したクライアントの数になります。
(integer) 1
この場合、前のステップで ターミナル 1 で mychannel にアクティブな購読があるため、出力は (integer) 1 となります。
次に、ターミナル 1(ステップ 1 で mychannel に購読した場所)に戻ります。発行したばかりのメッセージがリアルタイムで表示されているはずです。
1) "message"
2) "mychannel"
3) "Hello, Redis!"
これは以下を示しています。
"message": 発行されたメッセージであることを示します。"mychannel": メッセージが発行されたチャンネルです。"Hello, Redis!": メッセージの実際のコンテンツです。これでリアルタイムメッセージングを試すことができます。
例 - ターミナル 2 で:
PUBLISH mychannel "This is message 2"
PUBLISH mychannel "Real-time messaging works!"
重要: ターミナル 1 と ターミナル 2 の両方で redis-cli セッションをアクティブなままにしておいてください。次のステップでも両方のターミナルを使用します。
このステップでは、Redis の UNSUBSCRIBE コマンドを使用してチャンネルの購読を解除する方法を学びます。購読解除は、特定のチャンネルの購読者リストからクライアントを削除し、そのチャンネルに発行された後続のメッセージを受信しないようにします。
ターミナル 1 (現在 mychannel を購読している場所) に移動します。購読ステータスが「Reading messages... (press Ctrl-C to quit)」と表示されているはずです。
ターミナル 1 は購読モードになっているため、通常の Redis コマンドを直接実行することはできません。購読を解除するには、まず購読モードを終了する必要があります。
Ctrl+C を押して購読モードを終了します。
redis-cli セッションが終了し、ターミナルのプロンプトに戻るはずです。
Redis に再接続します。
redis-cli
これで UNSUBSCRIBE コマンドを実行できます (切断するとすでに購読解除されているため、実際には不要ですが)。
UNSUBSCRIBE mychannel
注意: Ctrl+C を押した時点で、実際にはすべての購読から切断されています。UNSUBSCRIBE コマンドはデモンストレーション目的で表示されていますが、実際には切断すると自動的にすべてのチャンネルから購読解除されます。
ターミナル 1 の出力は次のようになります。
1) "unsubscribe"
2) "mychannel"
3) (integer) 0
出力の内訳を見てみましょう。
"unsubscribe": チャンネルの購読を解除したことを示します。"mychannel": 購読を解除したチャンネルの名前です。(integer) 0: 現在購読しているチャンネルの数です。mychannel の購読を解除したため、現在は 0 です。次に ターミナル 2 に切り替えて、mychannel に別のメッセージを発行します。
PUBLISH mychannel "Is anyone still there?"
ターミナル 2 の出力は次のようになります。
(integer) 0
これは、ターミナル 1 でチャンネルの購読を解除したため、どのクライアントもメッセージを受信しなかったことを示しています。
ターミナル 1 を確認してください。チャンネルの購読を解除したため、新しいメッセージは表示されていないはずです。
これにより、チャンネルの購読を解除すると、そのチャンネルに発行された後続のメッセージを受信できなくなることがわかります。一方、発行者は引き続きメッセージを送信できます (ただし、誰も受信しません)。
重要: 次のステップのために、両方のターミナルとその
redis-cliセッションをアクティブなままにしておいてください。
このステップでは、Redis の PSUBSCRIBE コマンドを使用してパターンでチャンネルに購読する方法を学びます。PSUBSCRIBE を使用すると、指定されたパターンに一致する複数のチャンネルに購読できます。これは、個々のチャンネルに個別に購読することなく、関連するチャンネルのグループからのメッセージを受信したい場合に便利です。
前のステップで mychannel から購読解除したため、ターミナル 1 には通常の Redis プロンプトが表示されているはずです。
ターミナル 1 で、PSUBSCRIBE コマンドを使用して news.* パターンに一致するチャンネルに購読します。
PSUBSCRIBE news.*
出力は以下のようになります。
Reading messages... (press Ctrl-C to quit)
1) "psubscribe"
2) "news.*"
3) (integer) 1
出力の内訳を見てみましょう。
"psubscribe": パターンに正常に購読したことを示します。"news.*": 購読したパターンです。.* は任意の文字に一致するワイルドカードです。(integer) 1: 現在購読しているパターンの数です。ターミナル 2 に移動し、PUBLISH コマンドを使用して news.sports チャンネルにメッセージを発行します。
PUBLISH news.sports "Sports news update!"
ターミナル 2 の出力は、メッセージを受信した購読者の数になります。
(integer) 1
ターミナル 1(パターンに購読した場所)に戻ります。発行したばかりのメッセージが表示されているはずです。
1) "pmessage"
2) "news.*"
3) "news.sports"
4) "Sports news update!"
これは以下を示しています。
"pmessage": パターンマッチしたメッセージであることを示します。"news.*": マッチしたパターンです。"news.sports": メッセージが発行された実際のチャンネルです。"Sports news update!": メッセージの内容です。ターミナル 2 で、パターンに一致するさまざまなチャンネルに発行してみてください。
PUBLISH news.technology "New AI breakthrough!"
PUBLISH news.weather "Sunny skies ahead!"
PUBLISH sports.basketball "This won't match the pattern"
ターミナル 1 で、news.* のチャンネルのみが受信され、sports.basketball は news.* パターンに一致しないため受信されないことを確認してください。
重要: 両方のターミナルとその redis-cli セッションをアクティブなままにしておいてください。パターン購読は、複数の関連チャンネルを同時にリッスンする方法を示しています。
この実験では、Redis の Pub/Sub メッセージングの基本を学びました。SUBSCRIBE コマンドを使用したチャンネルへの購読、PUBLISH コマンドを使用したチャンネルへのメッセージ発行、UNSUBSCRIBE コマンドを使用したチャンネルからの購読解除、そして PSUBSCRIBE コマンドを使用したパターンによるチャンネルへの購読方法を学びました。これらのコマンドは、Redis を使用したリアルタイムメッセージングアプリケーションの構築に不可欠です。