Redisは、文字列、ハッシュ、リスト、コレクション、注文されたコレクションなど、さまざまなデータ構造をサポートする高性能キー価値ストレージシステムです。パブリッシュ/サブスクライブ(PUB/Sub)メカニズムにより、出版社と購読者の間でメッセージを渡すことができ、リアルタイムの情報流通を実現できます。パブリッシャーは指定されたチャネルにメッセージを送信し、サブスクライバーはチャンネルからメッセージを聞いて受信します。
PHPでRedisを使用する前に、PECLまたはソースコードを介してインストールできるRedis拡張機能をインストールする必要があります。インストールが完了したら、Redisクライアントを作成し、次のコードを使用してサーバーに接続します。
//aを作成しますRedisクライアントオブジェクト
$redis = new Redis();
//接続するRedisサーバ
$redis->connect('127.0.0.1', 6379);
ここでの接続方法は、RedisサーバーのIPアドレスとポート番号をパラメーターとして受け入れます。
$ redis-> publish()メソッドを介して、PHPは指定されたチャネルにメッセージを送信できます。コードの例は次のとおりです。
//指定されたチャネルにメッセージを公開します
$redis->publish($channel, $message);
ここで、 $チャネルはチャンネル名であり、 $メッセージは公開されたメッセージコンテンツです。
$ redis-> subscribe()メソッドを使用して、PHPは1つ以上のチャネルをサブスクライブしてメッセージをリッスンできます。例は次のとおりです。
//指定されたチャネルを購読します
$redis->subscribe([$channel1, $channel2], $callback);
パラメーターでは、 $ channel1および$ channel2はチャネル名の配列であり、 $ callbackはメッセージが受信されたときに実行されるコールバック関数であり、コールバックでメッセージを処理できます。
次の例は、PHPでメッセージを公開し、指定されたチャネルをリッスンする方法を示しています。
//aを作成しますRedisクライアントオブジェクト
$redis = new Redis();
//接続するRedisサーバ
$redis->connect('127.0.0.1', 6379);
//公開するチャネル名を指定します
$channel = 'my_channel';
//指定されたチャネルにメッセージを公開します
$redis->publish($channel, 'Hello, Redis!');
//聞き始めます,チャネルメッセージを待っています
$redis->subscribe([$channel], function($redis, $channel, $message) {
echo "Received message from channel {$channel}: {$message}\n";
});
この例では、最初にRedisサーバーに接続し、 my_channelチャネルにメッセージを公開し、サブスクリプションリスニングを開始します。チャネルがメッセージを受信すると、コールバック関数がメッセージコンテンツを印刷します。
Redisのパブリッシュ/サブスクライブ機能は、リアルタイムメッセージングの効率的なメカニズムを提供します。 PHPのRedis拡張機能の助けを借りて、開発者は公開メッセージと購読メッセージを簡単に実装でき、それにより柔軟なメッセージ処理アプリケーションを構築できます。