Comment PHP peut-il surveiller en permanence les abonnements aux messages Redis et traiter les points des membres ?
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.
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.
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_id
和points
两个字段,以及一个type
字段用于标识消息类型。根据不同的消息类型,调用相应的处理函数。
在处理函数中,我们对相应用户的积分进行相应的增加或扣除操作。这里只是简单地打印了一条消息,实际应用中可以根据需求进行相应的业务逻辑处理。
现在,我们可以启动Redis消息监听,来处理会员积分的变动了。在命令行中执行以下命令:
php index.php
此时,PHP脚本会进入监听状态,实时等待Redis中的消息。
在另外一个终端中,我们可以使用Redis的PUBLISH
predis/predis
. redis-cli PUBLISH member-points '{"type":"add_points","user_id":123,"points":100}'
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 viarequire '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!