Redis Pub/Subは、パブリッシャーがチャネル/トピックに公開し、複数のクライアントがそのチャネル/トピックを購読できるリアルタイムメッセージングシステムを実装しています。

Redis Pub Sub

最後のチュートリアル「 Redis Inmemoryデータベースの初心者向けガイド 」では、Redisについてメモリ内データベースとして学びました。そして、これがNOSQLデータベースとどのように競合するか。また、Redisを使用する場所とその使用が最適ではない場所も学びました。現在、その知識ベースの上に構築されているこのチュートリアルでは、Redis Pub/Sub、それがどのように機能するか、Redis Publish/Subscrie Systemの最良の使用について学びます。始めましょう。

パブリッシュ/サブスクライブパターンとは何ですか?

公開/購読または短いPub/Subでは、メッセージの送信者と受信者がそれらのメッセージを直接交換しないメッセージングパターンです。むしろ、メッセージの送信者はそれをチャネル/トピックに公開します。そして、これらのメッセージを受け取りたい人は皆、チャネル/トピックを購読します。だから、それはより技術的な説明でした。私たちの日常生活では、YouTube、Twitter、Facebook、Instagramなどのソーシャルメディアプラットフォームを使用しながら、このパブリッシュサブスクライブモデルを非常に頻繁に使用しています。コンテンツプロデューサーがコンテンツを作成する場所と興味のある人は、コンテンツに従い /購読します。したがって、これはソフトウェアアーキテクチャでもPub/Subパターンが行っていることです。

パブ/サブはどのように機能しますか?

ソフトウェア開発では、再利用性に重点が置かれています。すべての設計パターンは、再利用可能なコンポーネントまたはモジュールの構築に基づいています。したがって、パブ/サブを理解​​するには、最初にこのアイデアがどこから来たのか、開発者がそれをパターンとしてどのように見つけたかを見る必要があります。 ソフトウェアアーキテクチャが進化し、モジュールベースになるにつれて、モジュールとコンポーネントの間でより多くの通信 /メッセージングが増加しました。など、モジュールは入力を取り、出力を提供する処理ユニットと考えてください。また、各入力は、実際には処理装置が出力として別のメッセージを処理して生成するメッセージです。これは、他のモジュールへの入力となります。したがって、このメッセージの増加には、スケーラブルなアプリケーションがあるため、モジュールとコンポーネントが依存関係なく独立して動作できるという要件がありました。したがって、公開/購読パターンが登場しました。 多くのPub/Sub Systemsでは、パブリッシャーはメッセージを仲介メッセージブローカーまたはイベントバスに投稿し、サブスクライバーはそのブローカーにサブスクリプションを登録し、ブローカーがフィルタリングを実行できるようにします。ブローカーは通常、ストアとフォワード機能を実行して、出版社から加入者へのメッセージをルーティングします。さらに、ブローカーは、ルーティング前にキューでメッセージを優先順位付けする場合があります。

いつPub/Subを使用する必要がありますか?

チャットアプリケーションは、Pub/Subパターンの古典的なユースケースです。チャットアプリケーションでは、参加者は、指定されたパブ/サブトピックを持つチャットルームを購読できます。ユーザーがチャットルームにメッセージを送信すると、チャットアプリインスタンスはそのチャットルームのトピックに関するメッセージを公開します。トピックのサブスクライバーはメッセージを受け取ります。 メッセージキューサービス /メッセージキューイングまたはバッチ処理アプリケーションは、PUB /サブパターンを使用することもできます。特定のタスクを完了したいすべての人が、そのキューを購読したキューと処理ユニットにメッセージを公開し、ジョブを処理するメッセージを受信します。 パブ/サブパターンの利点のいくつかを議論しましょう

  • システムコンポーネント間の緩いカップリング
  • システム全体のワークフローのより良いビュー
  • より良い統合とより高速な統合を有効にします
  • スムーズなスケーラビリティを保証します
  • 一貫した信頼性を保証しました
  • 弾力性を構築します
  • ソフトウェアモジュール化
  • 言語不可知論のソフトウェア開発
  • ビジネスロジックの明確さ
  • 応答性が向上します

Redis Pub/Subの使用方法

Redisインストールについては、最後のチュートリアルを参照できます。この例では、出版社と加入者の概念がどのように機能するかを説明しています。次の例では、1人のクライアントが「Redischat」という名前のチャンネルを購読しています。

redis 127.0.0.1:6379> SUBSCRIBE redisChat  
Reading messages... (press Ctrl-C to quit) 
1) "subscribe" 
2) "redisChat" 
3) (integer) 1 

現在、2人のクライアントが「Redischat」という名前の同じチャネルでメッセージを公開しており、上記のクライアントがメッセージを受信して​​います。

redis 127.0.0.1:6379> PUBLISH redisChat "Redis is a great"  
(integer) 1  
redis 127.0.0.1:6379> PUBLISH redisChat "Learn redis"  
(integer) 1   
1) "message" 
2) "redisChat" 
3) "Redis is a great" 
1) "message" 
2) "redisChat" 
3) "Learn redis" 

結論

このチュートリアルでは、公開/購読設計パターンについて学びました。 Redis Pub/Subがどのように機能するかを調査しました。また、Redis Pub/Sub、リアルタイムメッセージングの最良のユースケースは何ですか。私の今後のチュートリアルでは、Redisをさらに調査し、Redis Pub/Subをnode.jsで使用してリアルタイムチャットアプリケーションを構築する方法を説明します。