Maison  >  Article  >  développement back-end  >  Comment PHP met-il en œuvre une surveillance continue des abonnements aux messages Redis et traite-t-il les points d'adhésion ?

Comment PHP met-il en œuvre une surveillance continue des abonnements aux messages Redis et traite-t-il les points d'adhésion ?

WBOY
WBOYoriginal
2023-09-05 18:39:141334parcourir

Comment PHP met-il en œuvre une surveillance continue des abonnements aux messages Redis et traite-t-il les points dadhésion ?

Comment PHP peut-il surveiller en permanence les abonnements aux messages Redis et traiter les points des membres ?

Introduction

Redis est un système de stockage clé-valeur hautes performances qui est souvent utilisé pour implémenter des files d'attente de messages. Lors du développement, nous rencontrons souvent des scénarios nécessitant un traitement des messages en temps réel, comme le traitement des modifications des points d'adhésion. Cet article explique comment utiliser PHP pour surveiller en permanence les abonnements aux messages Redis et gérer les modifications des points membres.

Préparation

Avant de commencer, nous devons installer l'extension Redis et installer l'outil Composer.

Tout d’abord, assurez-vous d’avoir installé l’extension Redis. Vous pouvez le vérifier avec la commande suivante :

php -m | grep redis

Si vous voyez "redis" dans la sortie, cela signifie que l'extension Redis a été installée. S'il n'est pas installé, veuillez installer l'extension Redis correspondante en fonction de votre système d'exploitation et de la version de PHP.

Ensuite, nous devons installer l'outil Composer. Veuillez visiter [https://getcomposer.org/](https://getcomposer.org/) et suivez le guide officiel pour l'installer.

Créer un projet

Tout d'abord, créez un nouveau dossier dans la ligne de commande et accédez à ce dossier.

mkdir redis-subscribe
cd redis-subscribe

Ensuite, initialisez un nouveau projet PHP à l'aide de Composer.

composer init

Suivez les instructions et entrez le nom du projet, la description et d'autres informations. Une fois terminé, un fichier composer.json sera généré dans le dossier actuel. 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

Ensuite, nous devons installer une bibliothèque client Redis, ici nous choisissons d'utiliser la bibliothèque predis/predis.

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

Une fois l'installation terminée, Composer générera un dossier vendor sous le dossier actuel, qui contient les bibliothèques dépendantes requises.

Ensuite, créez un nouveau fichier PHP index.php pour écrire le code de l'abonnement aux messages Redis et du traitement des points.

rrreee

Le code ci-dessus présente le chargeur automatique généré par Composer via require 'vendor/autoload.php';. Ensuite, une instance client Redis $redis est créée et la méthode $redis->subscribe() est utilisée pour s'abonner et traiter les messages.

Dans la méthode $redis->subscribe(), nous utilisons une fonction anonyme comme paramètre et exécutons la logique de traitement des messages dans le corps de la fonction. Ici, nous supposons que la structure du message est une chaîne JSON, comprenant deux champs : user_id et points, et un champ type pour identifier le message. taper. Selon les différents types de messages, la fonction de traitement correspondante est appelée. 🎜🎜Dans la fonction de traitement, nous ajoutons ou soustrayons les points de l'utilisateur correspondant en conséquence. Ici, un message est simplement imprimé. Dans les applications réelles, le traitement de logique métier correspondant peut être effectué en fonction des besoins. 🎜🎜Démarrer la surveillance🎜🎜Maintenant, nous pouvons démarrer la surveillance des messages Redis pour gérer les modifications des points des membres. Exécutez la commande suivante dans la ligne de commande : 🎜rrreee🎜À ce moment, le script PHP entrera en état d'écoute et attendra les messages dans Redis en temps réel. 🎜🎜Envoyer un message🎜🎜Dans un autre terminal, nous pouvons utiliser la commande PUBLISH de Redis pour publier un message sur les modifications apportées aux points des membres. Par exemple, nous pouvons utiliser la commande suivante pour envoyer un message pour augmenter les points : 🎜rrreee🎜 Ensuite, vous verrez les résultats du traitement correspondant dans la sortie du script PHP. 🎜🎜Résumé🎜🎜Grâce aux étapes ci-dessus, nous avons mis en œuvre avec succès une surveillance continue des abonnements aux messages Redis en PHP et traité les modifications des points membres en fonction de différents types de messages. Ce mécanisme d'abonnement et de traitement des messages basé sur Redis peut être appliqué de manière flexible dans divers scénarios de traitement de messages en temps réel. 🎜🎜J'espère que cet article vous aidera à comprendre comment utiliser PHP pour implémenter l'abonnement aux messages Redis et traiter les points d'adhésion. Si vous avez des questions ou des suggestions, veuillez laisser un message pour en discuter. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn