Heim  >  Artikel  >  Backend-Entwicklung  >  Wie implementiert PHP die kontinuierliche Überwachung von Redis-Nachrichtenabonnements und verarbeitet Mitgliedschaftspunkte?

Wie implementiert PHP die kontinuierliche Überwachung von Redis-Nachrichtenabonnements und verarbeitet Mitgliedschaftspunkte?

WBOY
WBOYOriginal
2023-09-05 18:39:141350Durchsuche

Wie implementiert PHP die kontinuierliche Überwachung von Redis-Nachrichtenabonnements und verarbeitet Mitgliedschaftspunkte?

Wie kann PHP Redis-Nachrichtenabonnements kontinuierlich überwachen und Mitgliedspunkte verarbeiten?

Einführung

Redis ist ein leistungsstarkes Schlüsselwertspeichersystem, das häufig zur Implementierung von Nachrichtenwarteschlangen verwendet wird. Während der Entwicklung stoßen wir häufig auf Szenarien, die eine Echtzeitverarbeitung von Nachrichten erfordern, z. B. die Verarbeitung von Änderungen an Mitgliedspunkten. In diesem Artikel wird erläutert, wie Sie mit PHP Redis-Nachrichtenabonnements kontinuierlich überwachen und Änderungen an Mitgliedspunkten verarbeiten können.

Vorbereitung

Bevor wir beginnen, müssen wir die Redis-Erweiterung installieren und das Composer-Tool installieren.

Stellen Sie zunächst sicher, dass Sie die Redis-Erweiterung installiert haben. Sie können dies mit dem folgenden Befehl überprüfen:

php -m | grep redis

Wenn in der Ausgabe „redis“ angezeigt wird, bedeutet dies, dass die Redis-Erweiterung installiert wurde. Wenn es nicht installiert ist, installieren Sie bitte die entsprechende Redis-Erweiterung entsprechend Ihrem Betriebssystem und Ihrer PHP-Version.

Als nächstes müssen wir das Composer-Tool installieren. Bitte besuchen Sie [https://getcomposer.org/](https://getcomposer.org/) und befolgen Sie die offizielle Anleitung zur Installation.

Projekt erstellen

Erstellen Sie zunächst einen neuen Ordner in der Befehlszeile und gehen Sie in diesen Ordner.

mkdir redis-subscribe
cd redis-subscribe

Als nächstes initialisieren Sie ein neues PHP-Projekt mit Composer.

composer init

Folgen Sie den Anweisungen und geben Sie den Projektnamen, die Beschreibung und andere Informationen ein. Nach Abschluss wird eine composer.json-Datei im aktuellen Ordner generiert. 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()方法中,我们使用了匿名函数作为参数,并在函数体中执行了处理消息的逻辑。这里我们假设消息的结构是一个JSON字符串,包含了user_idpoints两个字段,以及一个type字段用于标识消息类型。根据不同的消息类型,调用相应的处理函数。

在处理函数中,我们对相应用户的积分进行相应的增加或扣除操作。这里只是简单地打印了一条消息,实际应用中可以根据需求进行相应的业务逻辑处理。

启动监听

现在,我们可以启动Redis消息监听,来处理会员积分的变动了。在命令行中执行以下命令:

php index.php

此时,PHP脚本会进入监听状态,实时等待Redis中的消息。

发送消息

在另外一个终端中,我们可以使用Redis的PUBLISH

Dann müssen wir eine Redis-Client-Bibliothek installieren. Hier entscheiden wir uns für die Verwendung der predis/predis-Bibliothek.

redis-cli PUBLISH member-points '{"type":"add_points","user_id":123,"points":100}'

Nachdem die Installation abgeschlossen ist, generiert Composer unter dem aktuellen Ordner einen Ordner vendor, der die erforderlichen abhängigen Bibliotheken enthält.

Als nächstes erstellen Sie eine neue PHP-Datei index.php, um den Code für das Redis-Nachrichtenabonnement und die Punkteverarbeitung zu schreiben.

rrreee

Der obige Code führt den von Composer über require 'vendor/autoload.php'; generierten Autoloader ein. Anschließend wird eine Redis-Client-Instanz $redis erstellt und die Methode $redis->subscribe() zum Abonnieren und Verarbeiten von Nachrichten verwendet.

In der Methode $redis->subscribe() verwenden wir eine anonyme Funktion als Parameter und führen die Nachrichtenverarbeitungslogik im Funktionskörper aus. Hier gehen wir davon aus, dass die Nachrichtenstruktur eine JSON-Zeichenfolge ist, die zwei Felder enthält: user_id und points sowie ein Feld type zur Identifizierung der Nachricht. Typ. Je nach Nachrichtentyp wird die entsprechende Verarbeitungsfunktion aufgerufen. 🎜🎜In der Verarbeitungsfunktion addieren oder subtrahieren wir die Punkte des entsprechenden Benutzers entsprechend. Hier wird einfach eine Nachricht gedruckt. In tatsächlichen Anwendungen kann die entsprechende Geschäftslogikverarbeitung je nach Bedarf durchgeführt werden. 🎜🎜Überwachung starten🎜🎜Jetzt können wir mit der Redis-Nachrichtenüberwachung beginnen, um Änderungen an Mitgliedspunkten zu verarbeiten. Führen Sie den folgenden Befehl in der Befehlszeile aus: 🎜rrreee🎜Zu diesem Zeitpunkt wechselt das PHP-Skript in den Überwachungsstatus und wartet in Echtzeit auf Nachrichten in Redis. 🎜🎜Eine Nachricht senden🎜🎜In einem anderen Terminal können wir den Befehl PUBLISH von Redis verwenden, um eine Nachricht über Änderungen an Mitgliedspunkten zu veröffentlichen. Mit dem folgenden Befehl können wir beispielsweise eine Nachricht zum Erhöhen der Punkte senden: 🎜rrreee🎜 Dann sehen Sie die entsprechenden Verarbeitungsergebnisse in der Ausgabe des PHP-Skripts. 🎜🎜Zusammenfassung🎜🎜Durch die oben genannten Schritte haben wir die kontinuierliche Überwachung von Redis-Nachrichtenabonnements in PHP erfolgreich implementiert und Änderungen an Mitgliedspunkten basierend auf verschiedenen Nachrichtentypen verarbeitet. Dieser Redis-basierte Nachrichtenabonnement- und -verarbeitungsmechanismus kann flexibel in verschiedenen Echtzeit-Nachrichtenverarbeitungsszenarien angewendet werden. 🎜🎜Ich hoffe, dieser Artikel hilft Ihnen zu verstehen, wie Sie mit PHP das Redis-Nachrichtenabonnement implementieren und Mitgliedschaftspunkte verarbeiten. Wenn Sie Fragen oder Anregungen haben, hinterlassen Sie bitte eine Nachricht zur Diskussion. 🎜

Das obige ist der detaillierte Inhalt vonWie implementiert PHP die kontinuierliche Überwachung von Redis-Nachrichtenabonnements und verarbeitet Mitgliedschaftspunkte?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn