Redis (district de dictionnaire distant) est une base de données en mémoire haute performance qui prend en charge de riches structures de données. Parmi eux, le mécanisme Publish / Sbonned (Pub / Sub) peut être utilisé pour la communication asynchrone entre les services. Cet article expliquera comment écouter en continu des messages dans le canal Redis en utilisant le langage PHP et gérer ces événements d'abonnement en temps réel.
Le mode Publish / Sbonned de Redis permet aux clients de s'abonner à un ou plusieurs canaux, auxquels d'autres clients peuvent publier des messages. Une fois le message publié, tous les clients souscrivent au canal recevront immédiatement le contenu du message. Ce mécanisme est souvent utilisé dans des scénarios tels que la diffusion de messages, la notification en temps réel et les événements système.
Pour implémenter l'écoute de messages Redis dans PHP, vous devez installer l'extension PHP-Redis . La méthode d'installation est la suivante:
sudo apt-get install php-redis
Pour les anciennes versions de PHP, vous pouvez l'installer manuellement:
wget https://pecl.php.net/get/redis-5.3.4.tgz
tar -xzf redis-5.3.4.tgz
cd redis-5.3.4
phpize
./configure
make
sudo make install
Ensuite, ajoutez la configuration étendue dans php.ini :
extension=redis.so
Le code suivant montre comment se connecter à Redis et s'abonner à un canal à l'aide de PHP:
$redis = new Redis();
$redis->pconnect('127.0.0.1', 6379);
$redis->subscribe(['CHANNEL_NAME'], function ($redis, $channel, $msg) {
echo $channel . ": " . $msg . "\n";
});
Dans le code ci-dessus, la méthode abonnelle () est utilisée pour s'abonner au canal. Après avoir reçu le message, la fonction de rappel sera automatiquement exécutée pour réaliser le traitement en temps réel du message.
La façon dont vous traitez les messages d'abonnement peut être personnalisée. Voici une fonction de traitement des messages simple:
function handleMessage($redis, $channel, $message)
{
// Traiter le message reçu
echo "Received $message from channel $channel\n";
}
Abonnez-vous au canal à l'aide de fonctions personnalisées:
$redis = new Redis();
$redis->pconnect('127.0.0.1', 6379);
$redis->subscribe(['CHANNEL_NAME'], 'handleMessage');
Ce code traite le contenu du message abonné en définissant une fonction de rappel et imprime la sortie. Vous pouvez également effectuer plus d'opérations en fonction de la logique métier, telle que la rédaction de bases de données, le déclenchement d'autres services, etc.
Des mécanismes efficaces de notification d'événements et de diffusion de messages peuvent être réalisés grâce à PHP écoutant les messages de publication / souscript de Redis. Cet article présente le processus complet de l'extension d'installation à l'écriture de la logique d'écoute. Les développeurs peuvent développer de manière flexible la fonction de rappel d'abonnement en fonction de leur propre projet pour obtenir un traitement de messages en temps réel.