Redis を使用して分散メッセージのパブリッシュとサブスクリプションを実装する方法
Redis を使用して分散メッセージのパブリッシュとサブスクリプションを実装する方法
はじめに:
分散システムでは、メッセージのパブリッシュとサブスクリプションは一般的な通信モードです。異なるモジュール間の分離を実現します。高性能の Key-Value ストレージ システムとして、Redis を使用して分散メッセージのパブリッシュおよびサブスクリプション機能を実装できます。この記事では、Redis を使用してこの機能を実装する方法と、具体的なコード例を紹介します。
1. Redis のパブリッシュおよびサブスクリプション機能
Redis のパブリッシュおよびサブスクリプション機能は、メッセージ キューに基づいた実装です。これには、パブリッシュとサブスクライブという 2 つの主要な操作が含まれます。パブリッシャーはメッセージをチャネルにパブリッシュでき、サブスクライバーはチャンネルに登録してパブリッシャーによってパブリッシュされたメッセージを取得できます。この方法では、1 対多のメッセージングを実現できます。
2. シナリオ例
メッセージ パブリッシャーと複数のメッセージ サブスクライバーを含む分散システムがあると仮定します。パブリッシャーはイベントに関する情報をチャネルにパブリッシュし、サブスクライバーはチャネルに登録して、パブリッシャーによってパブリッシュされたメッセージを取得できます。以下は、簡単なシナリオの例です。
- パブリッシャー: Redis チャネルへのメッセージのパブリッシュを担当します。
- サブスクライバー: Redis チャネルにサブスクライブし、パブリッシャーによって公開されたメッセージを取得する責任を負います。
3. サンプル コード
次は、Python 言語と Redis-Py ライブラリを使用して分散メッセージのパブリッシングとサブスクリプションを実装するサンプル コードです:
- パブリッシャー コード:
import redis # 连接Redis r = redis.Redis(host='localhost', port=6379) # 让发布者不断地发送消息 while True: # 输入消息内容 message = input("请输入消息内容:") # 发布消息到频道 r.publish('channel', message)
- サブスクライバ コード:
import redis # 连接Redis r = redis.Redis(host='localhost', port=6379) # 创建订阅对象 p = r.pubsub() # 订阅频道 p.subscribe('channel') # 不断循环获取订阅的消息 for message in p.listen(): # 打印收到的消息 print("收到消息:", message['data'])
上記のコードでは、パブリッシャーは r.publish('channel', message) ## を使用します。 #「channel」という名前のチャネルにメッセージをパブリッシュします。購読者は、
p.subscribe('channel') を使用してチャネルに購読し、
p.listen() を使用して購読されたメッセージを取得します。
- Redis サーバーを起動します:
redis-server
- サブスクライバーを起動します (ターミナル ウィンドウを開く必要があります):
python subscriber.py
- パブリッシャーを起動します (別のターミナル ウィンドウを開く必要があります):
- サブスクライバのターミナル ウィンドウに、受信メッセージの出力が表示されます:
- 受信メッセージ: b'Hello, Redis!'
。
python publisher.py
- メッセージの内容を入力します。たとえば、「Hello,」と入力します。 Redis!」と言って車を返します。
この記事では、Redis を使用して分散メッセージ パブリッシングおよびサブスクリプション機能を実装する方法を紹介し、具体的なコード例を示します。このようにして、モジュール間の分離が達成され、システムの拡張性とパフォーマンスが向上します。この記事が分散通信パターンを検討している読者に役立つことを願っています。
以上がRedis を使用して分散メッセージのパブリッシュとサブスクリプションを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Redisクラスターモードは、シャードを介してRedisインスタンスを複数のサーバーに展開し、スケーラビリティと可用性を向上させます。構造の手順は次のとおりです。異なるポートで奇妙なRedisインスタンスを作成します。 3つのセンチネルインスタンスを作成し、Redisインスタンスを監視し、フェールオーバーを監視します。 Sentinel構成ファイルを構成し、Redisインスタンス情報とフェールオーバー設定の監視を追加します。 Redisインスタンス構成ファイルを構成し、クラスターモードを有効にし、クラスター情報ファイルパスを指定します。各Redisインスタンスの情報を含むnodes.confファイルを作成します。クラスターを起動し、CREATEコマンドを実行してクラスターを作成し、レプリカの数を指定します。クラスターにログインしてクラスター情報コマンドを実行して、クラスターステータスを確認します。作る

Redis Clusterは、Redisインスタンスの水平拡張を可能にする分散展開モデルであり、ノード間通信、ハッシュスロット部門キースペース、ノード選挙、マスター奴隷レプリケーション、コマンドリダイレクトを通じて実装されます。ハッシュスロット:キースペースをハッシュスロットに分割して、キーの責任ノードを決定します。ノード選挙:少なくとも3つのマスターノードが必要であり、選挙メカニズムを通じて1つのアクティブマスターノードのみが保証されます。マスタースレーブレプリケーション:マスターノードはリクエストの書き込みを担当し、スレーブノードはリクエストとデータレプリケーションを読む責任があります。コマンドリダイレクト:クライアントはキーを担当するノードに接続し、ノードは誤ったリクエストをリダイレクトします。トラブルシューティング:障害検出、オフラインのマーク、および再

Redisは、キーの一意性を確保するために5つの戦略を使用します。1。名前空間分離。 2。ハッシュデータ構造。 3.データ構造を設定します。 4。文字列キーの特殊文字。 5。LUAスクリプト検証。特定の戦略の選択は、データ組織、パフォーマンス、およびスケーラビリティ要件に依存します。

Redisはハッシュテーブルを使用してデータを保存し、文字列、リスト、ハッシュテーブル、コレクション、注文コレクションなどのデータ構造をサポートします。 Redisは、スナップショット(RDB)を介してデータを維持し、書き込み専用(AOF)メカニズムを追加します。 Redisは、マスタースレーブレプリケーションを使用して、データの可用性を向上させます。 Redisは、シングルスレッドイベントループを使用して接続とコマンドを処理して、データの原子性と一貫性を確保します。 Redisは、キーの有効期限を設定し、怠zyな削除メカニズムを使用して有効期限キーを削除します。

Redisバージョン番号を表示するには、次の3つの方法を使用できます。(1)情報コマンドを入力し、(2) - versionオプションでサーバーを起動し、(3)構成ファイルを表示します。

Redisのすべてのキーを表示するには、3つの方法があります。キーコマンドを使用して、指定されたパターンに一致するすべてのキーを返します。スキャンコマンドを使用してキーを繰り返し、キーのセットを返します。情報コマンドを使用して、キーの総数を取得します。

Redis Orderedセット(ZSET)は、並べ替えられた要素を保存し、関連するスコアでソートするために使用されます。 zsetを使用する手順には次のものがあります。1。zsetを作成します。 2。メンバーを追加します。 3.メンバースコアを取得します。 4。ランキングを取得します。 5.ランキング範囲のメンバーを取得します。 6.メンバーを削除します。 7.要素の数を取得します。 8。スコア範囲のメンバーの数を取得します。

Redisコマンドラインツール(Redis-Cli)を使用して、次の手順を使用してRedisを管理および操作します。サーバーに接続し、アドレスとポートを指定します。コマンド名とパラメーターを使用して、コマンドをサーバーに送信します。ヘルプコマンドを使用して、特定のコマンドのヘルプ情報を表示します。 QUITコマンドを使用して、コマンドラインツールを終了します。
