Redis はメッセージ キューを実装します: パブリッシュおよびサブスクライブ モデル
Redis は、キャッシュ、データベース、メッセージ キュー、その他のシナリオで一般的に使用される、高性能のキー/値ストレージ システムです。メッセージ キューの分野では、Redis はパブリッシュおよびサブスクライブ モデルを実装するためのパブリッシュ/サブスクライブ メカニズムを提供します。この記事では、Redis の pub/sub メカニズムと、Redis を使用してメッセージ キューを実装する方法を紹介します。
1. Redis のパブリッシュ/サブスクライブ メカニズム
Redis のパブリッシュ/サブスクライブ メカニズムは、典型的なパブリッシュおよびサブスクライブ モデルです。チャネルに基づいてメッセージ配信を実装します。パブリッシャーは指定されたチャネルにメッセージをパブリッシュし、サブスクライバーは 1 つ以上のチャネルにサブスクライブして、パブリッシャーによってチャネル内でパブリッシュされたメッセージを受信できます。
- パブリッシャー
Redis パブリッシャーは、PUBLISH コマンドを使用して、指定されたチャネルにメッセージを送信します。たとえば、次のコマンドは、channel1 という名前のチャネルにメッセージを送信できます。
PUBLISH channel1 "Hello, Redis!"
- Subscribers
Redis サブスクライバは、SUBSCRIBE コマンドを使用して 1 つ以上のチャネルにサブスクライブします。たとえば、次のコマンドは、channel1 と channel2 という 2 つのチャネルをサブスクライブできます。
SUBSCRIBE channel1 channel2
サブスクライバは、UNSUBSCRIBE コマンドを使用して指定されたチャネルからサブスクライブを解除するか、UNSUBSCRIBE コマンドを使用してすべてのチャネルからサブスクライブを解除できます。たとえば、次のコマンドを使用すると、channel2 の登録を解除できます。
UNSUBSCRIBE channel2
- メッセージ配信
パブリッシャーがチャネルにメッセージを送信すると、このチャネルのすべての登録者がこのメッセージを送信します。受け取られる。たとえば、次のコードは、Redis モジュールを使用して Node.js の Channel1 と Channel2 をサブスクライブし、メッセージの受信時にメッセージの内容を出力する方法を示しています。
const redis = require("redis"); const client = redis.createClient(); client.on("message", (channel, message) => { console.log(`Received message '${message}' on channel '${channel}'`); }); client.subscribe("channel1", "channel2");
2. Redis を使用してメッセージを実装します。 queue
Redis の pub/sub メカニズムでは、メッセージ キューを簡単に実装できます。このモードでは、パブリッシャーはメッセージをチャネルにパブリッシュし、サブスクライバーはチャネルにサブスクライブし、メッセージの受信時に対応するロジックを実行します。たとえば、次のコードは、Redis を使用して基本的なメッセージ キューを実装する方法を示しています。
const redis = require("redis"); const client = redis.createClient(); // 消息处理函数 const handleMessage = (channel, message) => { console.log(`Received message '${message}' on channel '${channel}'`); // 执行一些操作... }; // 订阅队列channel const subscribeQueue = () => { client.subscribe("queue", (err, count) => { if (err) { console.error(err); } else { console.log(`Subscribed to ${count} channels`); } }); }; // 发布消息到队列channel const publishMessage = (message) => { client.publish("queue", message, (err) => { if (err) { console.error(err); } else { console.log(`Published message '${message}'`); } }); }; // 监听队列 const listenQueue = () => { client.on("message", handleMessage); }; // 初始化 const init = () => { listenQueue(); subscribeQueue(); }; init();
上記のコードでは、handleMessage、subscribeQueue、publishMessage の 3 つの関数を定義します。 handleMessage 関数は、サブスクライバがメッセージを受信したときに呼び出されるメッセージ処理関数です。 submitQueue 関数は、queue という名前のチャネルをサブスクライブし、サブスクライブが成功すると、サブスクライブされたチャネルの数が出力されます。 publishMessage 関数は、メッセージをキューにパブリッシュします。
3. メッセージ キューのアプリケーション シナリオ
Redis を使用してメッセージ キューを実装するための多くのアプリケーション シナリオがあります。一般的なアプリケーション シナリオの一部を次に示します。
- 非同期タスク キュー
非同期タスク処理では、通常、メッセージ キューは、非同期で実行する必要があるタスクを保存するために使用されます。そして、1 つ以上のワーカー プロセスがキューからタスクを取得して実行します。 Redis のパブリッシュ/サブスクライブ メカニズムは、この非同期タスク キューを非常に適切に実装できます。
- メッセージ ブロードキャスト
シナリオによっては、チャット ルーム、リアルタイム通信、その他のシナリオなど、複数のクライアントにメッセージをブロードキャストする必要があります。メッセージ ブロードキャストは、Redis の pub/sub メカニズムを使用して簡単に実装できます。
- 電子メールの購読
電子メールの購読などのシナリオでは、ユーザーはいくつかのキーワードまたはタグを購読します。新しい電子メールがこれらのキーワードまたはタグに一致すると、電子メール情報を対応するチャネルに公開します。ユーザーは該当チャンネルに登録し、最新のメール情報をタイムリーに入手できます。
4. 概要
Redis のパブリッシュ/サブスクライブ メカニズムは、パブリッシュ モードとサブスクライブ モードを簡単に実装でき、メッセージ キューを実装する一般的な方法です。 Redis を使用してメッセージ キューを実装する場合は、同時アクセスやメッセージの損失などの問題に注意する必要がありますが、これらの問題はロックや永続化などによって解決できます。 Redis の pub/sub メカニズムについての理解を深めれば、Redis をより深く理解し、適用することができます。
以上がRedis はメッセージ キューを実装します: パブリッシュおよびサブスクライブ モデルの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の 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データをクリアする方法:Flushallコマンドを使用して、すべての重要な値をクリアします。 FlushDBコマンドを使用して、現在選択されているデータベースのキー値をクリアします。 [選択]を使用してデータベースを切り替え、FlushDBを使用して複数のデータベースをクリアします。 DELコマンドを使用して、特定のキーを削除します。 Redis-CLIツールを使用してデータをクリアします。

Redisのキューを読むには、キュー名を取得し、LPOPコマンドを使用して要素を読み、空のキューを処理する必要があります。特定の手順は次のとおりです。キュー名を取得します:「キュー:キュー」などの「キュー:」のプレフィックスで名前を付けます。 LPOPコマンドを使用します。キューのヘッドから要素を排出し、LPOP Queue:My-Queueなどの値を返します。空のキューの処理:キューが空の場合、LPOPはnilを返し、要素を読む前にキューが存在するかどうかを確認できます。

Redis指令を使用するには、次の手順が必要です。Redisクライアントを開きます。コマンド(動詞キー値)を入力します。必要なパラメーターを提供します(指示ごとに異なります)。 Enterを押してコマンドを実行します。 Redisは、操作の結果を示す応答を返します(通常はOKまたは-ERR)。

Redisを使用して操作をロックするには、setnxコマンドを介してロックを取得し、有効期限を設定するために有効期限コマンドを使用する必要があります。特定の手順は次のとおりです。(1)SETNXコマンドを使用して、キー価値ペアを設定しようとします。 (2)expireコマンドを使用して、ロックの有効期限を設定します。 (3)Delコマンドを使用して、ロックが不要になったときにロックを削除します。

Redisソースコードを理解する最良の方法は、段階的に進むことです。Redisの基本に精通してください。開始点として特定のモジュールまたは機能を選択します。モジュールまたは機能のエントリポイントから始めて、行ごとにコードを表示します。関数コールチェーンを介してコードを表示します。 Redisが使用する基礎となるデータ構造に精通してください。 Redisが使用するアルゴリズムを特定します。

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

Centosシステムでは、Redis構成ファイルを変更するか、Redisコマンドを使用して悪意のあるスクリプトがあまりにも多くのリソースを消費しないようにすることにより、LUAスクリプトの実行時間を制限できます。方法1:Redis構成ファイルを変更し、Redis構成ファイルを見つけます:Redis構成ファイルは通常/etc/redis/redis.confにあります。構成ファイルの編集:テキストエディター(VIやNANOなど)を使用して構成ファイルを開きます:sudovi/etc/redis/redis.conf luaスクリプト実行時間制限を設定します。
