ホームページ  >  記事  >  データベース  >  パブリッシュ/サブスクライブ モデルでの Redis のアプリケーション

パブリッシュ/サブスクライブ モデルでの Redis のアプリケーション

WBOY
WBOYオリジナル
2023-06-20 23:24:352309ブラウズ

Redis は、高パフォーマンスのオープンソース インメモリ データベースであり、主にデータ キャッシュ、メッセージ キュー、カウンター、ランキングなどのシナリオで使用されます。これらの実用的な機能に加えて、Redis は強力なパブリッシュ/サブスクライブ モデルもサポートしており、メッセージのパブリッシュ、メッセージのサブスクライブ、メッセージ メディエーションなどのシナリオに適用できます。次に、パブリッシュ/サブスクライブ モデルにおける Redis のアプリケーションを検討します。

パブリッシュ/サブスクライブ パターンの概念

パブリッシュ/サブスクライブ パターン (パブリッシュ/サブスクライブ パターン) は、一般的に使用されるメッセージ通信パターンです。これは、メッセージ パブリッシャーが次のことを行うことを可能にするメッセージ メディエーション メカニズムです。複数のリスナーに送信されます。このモデルでは、パブリッシャーとサブスクライバーの間に直接の接続はなく、メッセージ仲介者を介して通信します。

Redis はパブリッシュ/サブスクライブ モードを実装します

Redis では、SUBSCRIBE コマンドを使用して Redis サーバーにサブスクリプション メッセージを登録できます。新しいメッセージが公開されると、Redis サーバーはメッセージを購読しているすべてのクライアントに自動的に通知します。同様に、新しいメッセージは PUBLISH コマンドを通じて Redis サーバーにパブリッシュできます。これらのメッセージは、メッセージを購読しているすべてのクライアントに自動的にルーティングされます。

手順は次のとおりです:

  1. Redis クライアントの作成

最初に Redis クライアントを作成する必要があります。コードは次のとおりです。

import redis

redis_client = redis.Redis(host='localhost', port=6379, db=0)

このうち、host は Redis サーバーの IP アドレスを表し、port はポート番号を表し、db は使用するデータベース番号を表します。

  1. サブスクリプション メッセージ

サブスクリプション メッセージを Redis サーバーに登録する方法は次のとおりです。

redis_pubsub = redis_client.pubsub()
redis_pubsub.subscribe('channel_1') # 订阅名称为channel_1的消息

コードでは、pubsub( ) メソッドを使用して Redis パブリケーションを作成します。 - オブジェクトをサブスクライブし、subscribe() メソッドを使用して、channel_1 という名前のメッセージをサーバーに登録します。

  1. メッセージを発行する

メッセージを Redis サーバーに発行する方法は次のとおりです:

redis_client.publish('channel_1', 'Hello, world!')

コードでは、publish を使用します。 () メッセージ Hello, world !channel_1 に登録しているすべてのクライアントに送信するメソッド。

  1. メッセージの処理

Redis メッセージをサブスクライブした後、Redis サーバーから受信したメッセージを処理する必要があります。メッセージの処理方法は次のとおりです:

for message in redis_pubsub.listen():
    print(message)

コードでは、listen() メソッドを使用して、Redis サーバーから送信されたメッセージをリッスンします。Redis サーバーが新しいメッセージをクライアントに送信すると、それを印刷します。

アプリケーション シナリオ

  1. メッセージ通知の実装

パブリッシュ アンド サブスクライブ モデルを使用して、ニュース プッシュ、早期警告などのメッセージ通知機能を実装できます。 、など。たとえば、ニュース Web サイトは、新しくリリースされたニュースを Redis サーバーへのメッセージとして公開し、ニュースを購読しているすべてのユーザーに通知できます。これにより、ユーザーは最新のニュース情報をタイムリーに知ることができます。

    #分散システム通信の実現
分散システムでは、異なるノード間でメッセージ通信が必要です。ノード間の通信は、Redis のパブリッシュ/サブスクライブ モデルを通じて簡単に実現できます。

例:

システム ノード A が Redis サーバーにメッセージ (トピック) をパブリッシュし、ノード B とノード C がそのメッセージをサブスクライブします。ノード A がデータを更新すると、メッセージを発行してデータを更新するように Redis サーバーに通知します。Redis サーバーは、メッセージをサブスクライブするすべてのノードにデータ更新を通知します。ノード B とノード C は、それぞれメッセージを受信した後にデータを更新します。

    タスク分散の実装
Redis のパブリッシュ/サブスクライブ モデルは、リアルタイムのビジュアル タスク スケジューリング システムなどのタスク分散にも使用できます。たとえば、オンライン電子商取引プラットフォームでは、数千件の注文をリアルタイムで処理し、処理リソースがアイドル状態になっている作業ノードに注文を割り当てる必要があり、いかに迅速かつ安定して継続的に注文をノードに発送するかが鍵となります。 Redis のパブリッシュ/サブスクライブ モデルを通じて、注文管理システムは Redis サーバーに注文を発行し、各ワーカー ノードは特定の注文タイプをサブスクライブします。オーダーが解放されると、ワーカー ノードはすぐにオーダーを受信して​​処理を開始します。

概要

Redis のパブリッシュ&サブスクライブ モデルにより、メッセージ通知、分散システム通信、タスク割り当てなどの機能を簡単に実現できます。このモデルは、パブリッシャーとサブスクライバー間の結合を最小限に抑え、分離を実現します。同時に、Redis はメッセージのパブリッシュとサブスクリプションにおける高いパフォーマンスと高い同時実行性の特性を備えており、実際のアプリケーションにおけるこのモデルの信頼性と効率性を保証します。

以上がパブリッシュ/サブスクライブ モデルでの Redis のアプリケーションの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。