Position actuelle: Accueil> Derniers articles> Comment écouter continuellement les messages redis et les traiter?

Comment écouter continuellement les messages redis et les traiter?

gitbox 2025-06-17

Redis Message abonnement et publication

Redis est un système de stockage de structure de données de mémoire open source qui prend en charge plusieurs structures de données, telles que les chaînes, les hachages, les listes, les collections, etc. Il fournit également des fonctions d'abonnement et de publication de messages, permettant aux clients de s'abonner à un canal spécifié et de recevoir des notifications lorsque de nouveaux messages sont publiés sur le canal. Cet article présentera comment implémenter l'abonnement et l'écoute continue des messages redis dans PHP.

Installez le package d'extension redis

Avant de commencer à utiliser l'extension redis, vous devez d'abord l'installer. Vous pouvez l'installer via la commande PECL et exécuter la commande suivante:

 pecl install redis

Si votre système n'a pas d'installation de PECL, vous pouvez l'installer via la commande suivante:

 sudo apt-get install php-pear

Connectez-vous à Redis

Après avoir installé le package d'extension Redis, l'étape suivante consiste à se connecter au serveur Redis. Utilisez la méthode Connect dans la classe Redis pour établir une connexion. L'exemple de code est le suivant:

 $redis = new Redis();
$redis->connect('127.0.0.1', 6379);
echo 'redis connected';

Dans le code ci-dessus, le premier paramètre de la méthode de connexion est l'adresse IP du serveur Redis, et le deuxième paramètre est le numéro de port. Une fois la connexion réussie, le programme publiera un message "Redis connecté".

Abonnement et traitement du message

Après avoir réussi à vous connecter à Redis, vous pouvez commencer à vous abonner au canal de message et à traiter le message. Redis fournit des méthodes de souscription et de psychscribus pour s'abonner.

La méthode d'abonnement s'abonne à un ou plusieurs canaux spécifiés, comme indiqué ci-dessous:

 $redis->subscribe(array('channel1', 'channel2'), function($redis, $channel, $message) {
    echo "Received message from channel: {$channel}, message: {$message}\n";
});

Dans le code ci-dessus, le premier paramètre de la méthode d'abonnement est un tableau de canal et le deuxième paramètre est une fonction de rappel. La fonction de rappel sera exécutée après avoir reçu le message.

La méthode PSUBScribe prend en charge l'utilisation de caractères génériques pour s'abonner à plusieurs canaux, l'exemple est le suivant:

 $redis->psubscribe(array('channel.*'), function($redis, $channel, $message) {
    echo "Received message from channel: {$channel}, message: {$message}\n";
});

Le code ci-dessus signifie s'abonner à tous les canaux à partir de «canal».

Implémentez l'écoute continue des messages redis et abonnez-les et traitez-les

Afin de faire en sorte que le programme écoute en continu des messages et les traite en temps réel, la boucle while peut être utilisée pour écouter en continu des messages. Voici le code pour implémenter cette fonction:

 $redis->subscribe(array('channel'), function($redis, $channel, $message) {
    echo "Received message from channel: {$channel}, message: {$message}\n";
    // Traitement des messages reçus
});
while(true) {
    $redis->ping();
    sleep(1);
}

Dans ce code, la boucle while détecte en continu si la connexion redis est normale à travers la méthode de ping et dort une fois par seconde.

Exemple de code complet

Voici un exemple complet de code PHP pour implémenter l'abonnement Redis Message et l'écoute continue:

 
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->subscribe(array('channel'), function($redis, $channel, $message) {
    echo "Received message from channel: {$channel}, message: {$message}\n";
    // Traitement des messages reçus
});
while(true) {
    $redis->ping();
    sleep(1);
}

Résumer

Grâce à cet article, nous avons appris à utiliser le package d'extension redis en PHP pour écouter en continu les messages d'abonnement et de processus redis. Nous décrivons comment s'abonner et les méthodes de réciprocité sur le canal des messages et utiliser une boucle while pour écouter en continu des messages, garantissant que tous les messages reçus sont traités en temps réel.