Position actuelle: Accueil> Derniers articles> Comment écouter en continu les messages redis et gérer les tâches de file d'attente à l'aide de PHP?

Comment écouter en continu les messages redis et gérer les tâches de file d'attente à l'aide de PHP?

gitbox 2025-06-13

Qu'est-ce que Redis?

Redis est un système de stockage de données en mémoire open source haute performance qui peut être utilisé comme base de données, cache et middleware de message. Par rapport aux bases de données relationnelles traditionnelles, Redis présente des avantages significatifs en matière de lecture et d'écriture de données, de capacités de concurrence et d'expansion fonctionnelle. Redis prend également en charge le mode Publish / Subscribe pour implémenter des files d'attente de messages, adaptés à la gestion des tâches asynchrones et des flux de données en temps réel.

Le mode publication / abonnement de Redis

Le mode Publish / Subscribe de Redis est implémenté via la commande pub / sub. Dans ce mode:

  • L'éditeur utilise la commande publique pour publier des messages sur un canal
  • Les abonnés souscrivent à des canaux spécifiques à l'aide de la commande d'abonnement
  • Lorsque l'éditeur envoie un message à la chaîne, tous les abonnés recevront le message

Ce mode convient au traitement des événements en temps réel, tels que les salles de chat en ligne et la poussée de données en temps réel, etc. Cependant, dans les applications pratiques, nous devrons peut-être traiter ces messages et les traduire en logique métier.

Écoute continue des files d'attente de messages redis à l'aide de php

Nous pouvons gérer la file d'attente de messages de Redis via l'extension Redis de PHP. Cette extension nous aide à nous connecter à Redis Server et à vous abonner aux canaux. Lorsqu'il y a un nouveau message sur la chaîne, le script PHP reçoit le message et le traite.

Connectez-vous au serveur Redis

Avant d'utiliser l'extension redis, vous devez d'abord installer l'extension. Une fois l'installation terminée, nous pouvons nous connecter au serveur Redis via le code suivant:

 
$redis = new Redis();
$redis->connect('localhost', 6379);
  

Ici, nous créons une instance Redis et nous nous connectons au serveur Redis local. Si le serveur Redis est situé à une autre adresse, vous pouvez modifier les paramètres de la méthode `Connect ()` pour spécifier l'adresse IP du serveur.

Abonnez-vous à la file d'attente de messages redis

Après vous être connecté à Redis, utilisez la méthode `abonnez-vous () pour vous abonner à un canal. Cette méthode prend un tableau en tant que paramètre contenant le nom du canal. Par exemple, nous pouvons souscrire à une chaîne appelée "MyChannel":

 
$redis->subscribe(['mychannel'], 'callback');
  

Dans ce code, nous souscrivons à une chaîne appelée "MyChannel" et spécifions une fonction de rappel `rappel '. Lorsque Redis envoie un message au canal, le programme PHP exécutera automatiquement la fonction de rappel pour traiter le message.

Processus messages abonnés

Après avoir reçu le message, nous devons écrire une logique de traitement dans la fonction de rappel. Cette fonction de rappel sera déclenchée lorsqu'un message sera reçu et recevra automatiquement le canal et le contenu du message envoyé par redis.

 
function callback($redis, $channel, $message) {
  echo "Received message: $message\n";
}
  

Dans cet exemple, la fonction de rappel recevra trois paramètres: `$ redis` est l'instance redis,` $ canal` est le nom du canal, et `$ message` est le contenu du message. Lorsqu'un nouveau message est reçu, la fonction sortira le contenu du message.

Exemple de code complet

Voici un exemple complet de code qui montre comment écouter en continu les messages redis et gérer les tâches de file d'attente à l'aide de PHP:

 
$redis = new Redis();
$redis->connect('localhost', 6379);
$redis->subscribe(['mychannel'], 'callback');

function callback($redis, $channel, $message) {
  $data = json_decode($message, true);
  processTask($data);
}

function processTask($data) {
  if ($data['task'] == 'send_email') {
    sendEmail($data['to'], $data['subject'], $data['content']);
  } elseif ($data['task'] == 'update_statistics') {
    updateStatistics();
  }
}

function sendEmail($to, $subject, $content) {
  // Envoyer le code e-mail
}

function updateStatistics() {
  // Mettre à jour le code des statistiques
}
  

Dans cet exemple complet, le programme PHP s'abonne à un canal appelé "MyChannel" et appelle la fonction de traitement correspondante lors de la réception d'un message de type de tâche. Par exemple, si la tâche est "Send_email", la fonction `SendEmail ()" est appelée pour envoyer le courrier; si la tâche est "Update_statistics", la fonction `UpdateStatistics ()" est appelée pour mettre à jour les statistiques.

Résumer

En écoutant en continu les abonnements de messages de Redis à l'aide de PHP, vous pouvez implémenter un traitement asynchrone des tâches de file d'attente, améliorant considérablement les performances du système. Dans les applications pratiques, la mise en place de tâches longues dans les files d'attente de messages pour le traitement et l'utilisation de PHP pour écouter ces files d'attente peut réduire efficacement la charge du système et améliorer les capacités de traitement simultanées. Dans le même temps, cette méthode convient également aux scénarios d'application en temps réel, tels que les salles de chat en temps réel et en ligne.