PHP は Redis メッセージ サブスクリプションとプロセス メンバーシップ ポイントの継続的な監視をどのように実装しますか?

WBOY
リリース: 2023-09-05 19:42:02
オリジナル
1346 人が閲覧しました

PHP は Redis メッセージ サブスクリプションとプロセス メンバーシップ ポイントの継続的な監視をどのように実装しますか?

PHP は、Redis メッセージ サブスクリプションとプロセス メンバー ポイントの継続的な監視をどのように実装しますか?

はじめに

Redis は、メッセージ キューの実装としてよく使用される、高性能のキー/値ストレージ システムです。開発中、メンバーシップ ポイントの変更の処理など、メッセージのリアルタイム処理が必要なシナリオに遭遇することがよくあります。この記事では、PHP を使用して Redis メッセージ サブスクリプションを継続的に監視し、メンバー ポイントの変更を処理する方法を紹介します。

準備

開始する前に、Redis 拡張機能をインストールし、Composer ツールをインストールする必要があります。

まず、Redis 拡張機能がインストールされていることを確認してください。次のコマンドで確認できます。

php -m | grep redis
ログイン後にコピー

出力に「redis」が表示される場合は、Redis 拡張機能がインストールされていることを意味します。インストールされていない場合は、オペレーティング システムと PHP バージョンに応じて、対応する Redis 拡張機能をインストールしてください。

次に、Composer ツールをインストールする必要があります。 [https://getcomposer.org/](https://getcomposer.org/) にアクセスし、公式ガイドに従ってインストールしてください。

プロジェクトの作成

まず、コマンド ラインで新しいフォルダーを作成し、そのフォルダーを入力します。

mkdir redis-subscribe
cd redis-subscribe
ログイン後にコピー

次に、Composer を使用して新しい PHP プロジェクトを初期化します。

composer init
ログイン後にコピー

プロンプトに従って、プロジェクト名、説明、その他の情報を入力します。完了すると、現在のフォルダーに composer.json ファイルが生成されます。

次に、Redis クライアント ライブラリをインストールする必要があります。ここでは、predis/predis ライブラリを使用することを選択します。

composer require predis/predis
ログイン後にコピー

インストールが完了すると、Composer は現在のフォルダーの下に vendor フォルダーを生成します。このフォルダーには、必要な依存ライブラリが含まれています。

次に、新しい PHP ファイル index.php を作成します。これは、Redis メッセージ サブスクリプションとポイント処理のコードを記述するために使用されます。

<?php

require 'vendor/autoload.php';

use PredisClient;

$redis = new Client();

$redis->subscribe(['member-points'], function ($redis, $channel, $message) {
    // 处理消息
    $data = json_decode($message, true);

    // 根据消息类型处理积分
    if ($data['type'] === 'add_points') {
        addPoints($data['user_id'], $data['points']);
    } elseif ($data['type'] === 'deduct_points') {
        deductPoints($data['user_id'], $data['points']);
    }
});

function addPoints($userId, $points)
{
    // 处理增加积分逻辑
    echo "增加{$points}积分给用户{$userId}" . PHP_EOL;
}

function deductPoints($userId, $points)
{
    // 处理扣除积分逻辑
    echo "扣除{$points}积分给用户{$userId}" . PHP_EOL;
}
ログイン後にコピー

上記のコードは、require 'vendor/autoload.php'; を通じて Composer によって生成されたオートローダーを導入しています。次に、Redis クライアント インスタンス $redis が作成され、$redis->subscribe() メソッドを使用してメッセージをサブスクライブし、処理します。

$redis->subscribe() メソッドでは、匿名関数をパラメーターとして使用し、関数本体でメッセージ処理ロジックを実行します。ここでは、メッセージ構造が、user_idpoints の 2 つのフィールドと、メッセージ タイプを識別する type フィールドを含む JSON 文字列であると仮定します。メッセージの種類に応じて、対応する処理関数が呼び出されます。

処理関数では、対応するユーザーのポイントを適宜加算または減算します。ここではメッセージを出力するだけですが、実際のアプリケーションでは必要に応じて対応するビジネスロジック処理を実行します。

リスニングの開始

これで、メンバー ポイントの変更を処理するために Redis メッセージの監視を開始できます。コマンド ラインで次のコマンドを実行します。

php index.php
ログイン後にコピー

この時点で、PHP スクリプトはリスニング状態になり、Redis でリアルタイムでメッセージを待機します。

メッセージの送信

別のターミナルで、Redis の PUBLISH コマンドを使用して、メンバー ポイントの変更に関するメッセージを公開できます。たとえば、次のコマンドを使用して、ポイントを増やすメッセージを送信できます。

redis-cli PUBLISH member-points '{"type":"add_points","user_id":123,"points":100}'
ログイン後にコピー

これにより、対応する処理結果が PHP スクリプトの出力に表示されます。

概要

上記の手順により、PHP で Redis メッセージ サブスクリプションの継続的な監視を実装し、さまざまな種類のメッセージに基づいてメンバー ポイントの変更を処理することができました。この Redis ベースのメッセージ サブスクリプションおよび処理メカニズムは、さまざまなリアルタイム メッセージ処理シナリオに柔軟に適用できます。

この記事が、PHP を使用して Redis メッセージ サブスクリプションを実装し、メンバーシップ ポイントを処理する方法を理解するのに役立つことを願っています。ご質問やご提案がございましたら、ディスカッションのためにメッセージを残してください。

以上がPHP は Redis メッセージ サブスクリプションとプロセス メンバーシップ ポイントの継続的な監視をどのように実装しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート