はじめに (Introduction)
この実験 (lab) では、Redis の Pub/Sub メッセージングシステムについて学びます。チャンネルへのサブスクライブ、メッセージのパブリッシュ、およびサブスクライブ解除の方法を習得します。この実験 (lab) では、SUBSCRIBE
、PUBLISH
、UNSUBSCRIBE
、および PSUBSCRIBE
コマンドを使用した基本的な操作を説明します。
この実験 (lab) では、Redis の Pub/Sub メッセージングシステムについて学びます。チャンネルへのサブスクライブ、メッセージのパブリッシュ、およびサブスクライブ解除の方法を習得します。この実験 (lab) では、SUBSCRIBE
、PUBLISH
、UNSUBSCRIBE
、および PSUBSCRIBE
コマンドを使用した基本的な操作を説明します。
このステップでは、SUBSCRIBE
コマンドを使用して Redis のチャンネルをサブスクライブする方法を学びます。チャンネルをサブスクライブすると、そのチャンネルにパブリッシュされたメッセージを受信できます。これは、Redis の Pub/Sub メッセージングシステムにおける基本的な概念です。
まず、ターミナルを開きます。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-cli
を終了します。これは、コマンド履歴が正しく記録されるために重要です。Ctrl+C
を押してサブスクリプションを停止し、exit
と入力して Enter
キーを押します。
exit
このステップでは、PUBLISH
コマンドを使用して Redis のチャンネルにメッセージをパブリッシュする方法を学びます。メッセージのパブリッシュは Pub/Sub システムの中核となる機能であり、特定のチャンネルのすべてのサブスクライバーにデータを送信できます。
新しいターミナルを開きます。提供されている Xfce ターミナルを使用できます。
redis-cli
コマンドを使用して Redis サーバーに接続します。
redis-cli
Redis プロンプト 127.0.0.1:6379>
が表示されるはずです。
次に、PUBLISH
コマンドを使用して mychannel
チャンネルにメッセージをパブリッシュします。
PUBLISH mychannel "Hello, Redis!"
出力は、メッセージを受信したクライアントの数になります。
(integer) 1
この場合、前のステップで mychannel
をサブスクライブしたため、出力は (integer) 1
になります。サブスクライブしていない場合、出力は (integer) 0
になります。
次に、このターミナルで redis-cli
を終了します。
exit
最初のターミナル(ステップ 1 で mychannel
をサブスクライブしたターミナル)に戻ります。パブリッシュしたメッセージが表示されるはずです。そのターミナルを閉じた場合は、新しいターミナルを開き、SUBSCRIBE mychannel
コマンドを使用して mychannel
に再度サブスクライブする必要があります。
redis-cli
SUBSCRIBE mychannel
このターミナルを開いたままにして、サブスクライブした状態を維持してください。
このステップでは、UNSUBSCRIBE
コマンドを使用して Redis のチャンネルからサブスクリプションを解除する方法を学びます。サブスクリプションを解除すると、クライアントは特定のチャンネルのサブスクライバーのリストから削除され、そのチャンネルにパブリッシュされたメッセージを受信できなくなります。
前のステップから続けて、ターミナルが 1 つ開いており、mychannel
にサブスクライブしている状態であるはずです。
そのターミナルで、次のコマンドを実行して mychannel
チャンネルからサブスクリプションを解除します。
UNSUBSCRIBE mychannel
出力は次のようになります。
1) "unsubscribe"
2) "mychannel"
3) (integer) 0
出力の内訳は次のとおりです。
"unsubscribe"
: これは、チャンネルからサブスクリプションを解除したことを示します。"mychannel"
: これは、サブスクリプションを解除したチャンネルの名前です。(integer) 0
: これは、現在サブスクライブしているチャンネルの数です。mychannel
からサブスクリプションを解除したため、0 になっています。次に、このターミナルで redis-cli
を終了します。
exit
新しいターミナルを開き、Redis に接続します。
redis-cli
別のメッセージを mychannel
にパブリッシュします。
PUBLISH mychannel "Is anyone still there?"
このターミナルの出力は次のようになります。
(integer) 0
これは、前のステップでサブスクリプションを解除したため、メッセージを受信したクライアントがいないことを示しています。
次に、このターミナルで redis-cli
を終了します。
exit
これは、チャンネルからサブスクリプションを解除し、そのチャンネルにパブリッシュされたメッセージを受信しないようにする方法を示しています。
このステップでは、Redis で PSUBSCRIBE
コマンドを使用して、パターンに一致するチャンネルをサブスクライブする方法を学びます。PSUBSCRIBE
を使用すると、指定されたパターンに一致する複数のチャンネルをサブスクライブできます。これは、関連するチャンネルのグループからメッセージを受信したい場合に、各チャンネルを個別にサブスクライブせずに済むため便利です。
ターミナルを開きます。
redis-cli
コマンドを使用して Redis サーバーに接続します。
redis-cli
次に、PSUBSCRIBE
コマンドを使用して、パターン news.*
に一致するチャンネルをサブスクライブします。
PSUBSCRIBE news.*
出力は次のようになります。
Reading messages... (press Ctrl-C to quit)
1) "psubscribe"
2) "news.*"
3) (integer) 1
出力の内訳は次のとおりです。
"psubscribe"
: これは、パターンへのサブスクリプションが正常に完了したことを示します。"news.*"
: これは、サブスクライブしたパターンです。.*
は、任意の文字に一致するワイルドカードです。(integer) 1
: これは、現在サブスクライブしているパターンの数です。このターミナルを開いたままにして、サブスクライブした状態を維持してください。
次に、このターミナルで redis-cli
を終了します。
exit
新しいターミナルを開き、Redis に接続します。
redis-cli
PUBLISH
コマンドを使用して、news.sports
チャンネルにメッセージをパブリッシュします。
PUBLISH news.sports "Sports news update!"
このターミナルの出力は、メッセージを受信したサブスクライバーの数になります。
(integer) 1
次に、このターミナルで redis-cli
を終了します。
exit
最初のターミナル(パターンをサブスクライブしたターミナル)に戻ります。パブリッシュしたメッセージが表示されるはずです。そのターミナルを閉じた場合は、新しいターミナルを開き、PSUBSCRIBE news.*
コマンドを使用して news.*
に再度サブスクライブする必要があります。
redis-cli
PSUBSCRIBE news.*
このターミナルを開いたままにして、サブスクライブした状態を維持してください。
この実験 (lab) では、Redis の Pub/Sub メッセージングの基礎を学びました。SUBSCRIBE
コマンドを使用してチャンネルをサブスクライブする方法、PUBLISH
コマンドを使用してチャンネルにメッセージをパブリッシュする方法、UNSUBSCRIBE
コマンドを使用してチャンネルからサブスクリプションを解除する方法、および PSUBSCRIBE
コマンドを使用してパターンを使用してチャンネルをサブスクライブする方法を学習しました。これらのコマンドは、Redis でリアルタイムメッセージングアプリケーションを構築するために不可欠です。