Redis Pub/Sub メッセージング

RedisRedisBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに (Introduction)

この実験 (lab) では、Redis の Pub/Sub メッセージングシステムについて学びます。チャンネルへのサブスクライブ、メッセージのパブリッシュ、およびサブスクライブ解除の方法を習得します。この実験 (lab) では、SUBSCRIBEPUBLISHUNSUBSCRIBE、および PSUBSCRIBE コマンドを使用した基本的な操作を説明します。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL redis(("Redis")) -.-> redis/RedisGroup(["Redis"]) redis/RedisGroup -.-> redis/access_cli("Connect Using CLI") subgraph Lab Skills redis/access_cli -.-> lab-552102{{"Redis Pub/Sub メッセージング"}} end

SUBSCRIBE コマンドでチャンネルをサブスクライブする (Subscribe to a Channel with SUBSCRIBE)

このステップでは、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 コマンドでメッセージをパブリッシュする (Publish Messages with PUBLISH)

このステップでは、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 コマンドでサブスクリプションを解除する (Unsubscribe with UNSUBSCRIBE)

このステップでは、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

これは、チャンネルからサブスクリプションを解除し、そのチャンネルにパブリッシュされたメッセージを受信しないようにする方法を示しています。

PSUBSCRIBE コマンドでパターンによるサブスクリプションを行う (Pattern Subscribe with PSUBSCRIBE)

このステップでは、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.*

このターミナルを開いたままにして、サブスクライブした状態を維持してください。

まとめ (Summary)

この実験 (lab) では、Redis の Pub/Sub メッセージングの基礎を学びました。SUBSCRIBE コマンドを使用してチャンネルをサブスクライブする方法、PUBLISH コマンドを使用してチャンネルにメッセージをパブリッシュする方法、UNSUBSCRIBE コマンドを使用してチャンネルからサブスクリプションを解除する方法、および PSUBSCRIBE コマンドを使用してパターンを使用してチャンネルをサブスクライブする方法を学習しました。これらのコマンドは、Redis でリアルタイムメッセージングアプリケーションを構築するために不可欠です。