Redis(リモート辞書サーバー)は、豊富なデータ構造をサポートする高性能のメモリデータベースです。その中で、パブリッシュ/サブスクライブ(PUB/SUB)メカニズムを使用して、サービス間の非同期通信に使用できます。この記事では、PHP言語を使用してRedisチャネルでメッセージを継続的に聴き、これらのサブスクリプションイベントをリアルタイムで処理する方法について説明します。
Redisのパブリッシュ/サブスクライブモードを使用すると、クライアントは1つ以上のチャネルを購読できます。メッセージが公開されると、すべてのクライアントがチャンネルを購読すると、すぐにメッセージコンテンツが受信されます。このメカニズムは、メッセージブロードキャスト、リアルタイム通知、システムイベントなどのシナリオでよく使用されます。
PHPでRedisメッセージリスニングを実装するには、 PHP-Redis拡張機能をインストールする必要があります。インストール方法は次のとおりです。
sudo apt-get install php-redis
PHPの古いバージョンの場合、手動でインストールできます。
wget https://pecl.php.net/get/redis-5.3.4.tgz
tar -xzf redis-5.3.4.tgz
cd redis-5.3.4
phpize
./configure
make
sudo make install
次に、 php.iniに拡張構成を追加します。
extension=redis.so
次のコードは、Redisに接続し、PHPを使用してチャネルに購読する方法を示しています。
$redis = new Redis();
$redis->pconnect('127.0.0.1', 6379);
$redis->subscribe(['CHANNEL_NAME'], function ($redis, $channel, $msg) {
echo $channel . ": " . $msg . "\n";
});
上記のコードでは、 subscribe()メソッドを使用してチャネルをサブスクライブします。メッセージを受信した後、コールバック関数が自動的に実行され、メッセージのリアルタイム処理が実現します。
サブスクリプションメッセージを処理する方法はカスタマイズできます。これが単純なメッセージ処理関数です:
function handleMessage($redis, $channel, $message)
{
// 受信したメッセージを処理します
echo "Received $message from channel $channel\n";
}
カスタム関数を使用してチャネルを購読します。
$redis = new Redis();
$redis->pconnect('127.0.0.1', 6379);
$redis->subscribe(['CHANNEL_NAME'], 'handleMessage');
このコードは、コールバック関数を定義することにより、購読されたメッセージコンテンツを処理し、出力を印刷します。また、データベースの作成、他のサービスのトリガーなど、ビジネスロジックに基づいてより多くの操作を実行することもできます。
効率的なイベント通知とメッセージブロードキャストメカニズムは、Redisの公開/購読メッセージを聴くことでPHPを通じて達成できます。この記事では、インストール拡張機能からリスニングロジックの作成までの完全なプロセスを紹介します。開発者は、リアルタイムのメッセージ処理を実現するために、独自のプロジェクトに従ってサブスクリプションコールバック機能を柔軟に拡張できます。