Messagerie Pub/Sub Redis

RedisBeginner
Pratiquer maintenant

Introduction

Dans ce laboratoire, vous allez explorer le système de messagerie Pub/Sub de Redis. Vous apprendrez à vous abonner à des canaux, à publier des messages et à vous désabonner. Ce laboratoire vous guidera à travers les opérations fondamentales en utilisant les commandes SUBSCRIBE, PUBLISH, UNSUBSCRIBE et PSUBSCRIBE.

S'abonner à un canal avec SUBSCRIBE

Dans cette étape, vous apprendrez à vous abonner à un canal dans Redis en utilisant la commande SUBSCRIBE. S'abonner à un canal vous permet de recevoir les messages publiés sur ce canal. C'est un concept fondamental dans le système de messagerie Pub/Sub de Redis.

Terminal 1 : S'abonner à un canal

Ouvrez votre premier terminal (nous l'appellerons Terminal 1). Vous pouvez utiliser le terminal Xfce fourni dans l'environnement LabEx.

Connectez-vous au serveur Redis en utilisant la commande redis-cli :

redis-cli

Vous devriez voir l'invite Redis : 127.0.0.1:6379>.

Abonnez-vous à un canal nommé mychannel en utilisant la commande SUBSCRIBE :

SUBSCRIBE mychannel

La sortie ressemblera à ceci :

Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "mychannel"
3) (integer) 1

Analysons la sortie :

  • "subscribe" : Ceci indique que vous vous êtes abonné avec succès à un canal.
  • "mychannel" : C'est le nom du canal auquel vous vous êtes abonné.
  • (integer) 1 : C'est le nombre de canaux auxquels vous êtes actuellement abonné.

Important : Gardez le Terminal 1 ouvert avec la session redis-cli active et abonné au canal. Ne fermez pas ce terminal et n'appuyez pas sur Ctrl+C, car cela vous désabonnerait du canal. Nous utiliserons un second terminal pour publier des messages à l'étape suivante.

Publier des messages avec PUBLISH

Dans cette étape, vous apprendrez à publier des messages sur un canal dans Redis en utilisant la commande PUBLISH. La publication de messages est la fonctionnalité principale du système Pub/Sub, vous permettant d'envoyer des données à tous les abonnés d'un canal spécifique.

Terminal 2 : Publier des messages

Ouvrez un second terminal (nous l'appellerons Terminal 2). Vous pouvez ouvrir un nouvel onglet dans votre terminal Xfce.

Connectez-vous au serveur Redis en utilisant la commande redis-cli :

redis-cli

Vous devriez voir l'invite Redis : 127.0.0.1:6379>.

Maintenant, publiez un message sur le canal mychannel en utilisant la commande PUBLISH :

PUBLISH mychannel "Hello, Redis!"

La sortie dans le Terminal 2 sera le nombre de clients qui ont reçu le message :

(integer) 1

Dans ce cas, la sortie est (integer) 1 car vous avez un abonnement actif à mychannel dans le Terminal 1 de l'étape précédente.

Observer le message dans le Terminal 1

Revenez maintenant au Terminal 1 (où vous vous êtes abonné à mychannel à l'étape 1). Vous devriez voir le message que vous venez de publier s'afficher en temps réel :

1) "message"
2) "mychannel"
3) "Hello, Redis!"

Ceci indique :

  • "message" : Indique qu'il s'agit d'un message publié
  • "mychannel" : Le canal sur lequel le message a été publié
  • "Hello, Redis!" : Le contenu réel du message

Tester la messagerie en temps réel

Vous pouvez maintenant expérimenter la messagerie en temps réel :

  1. Retournez au Terminal 2 et publiez d'autres messages
  2. Passez au Terminal 1 pour les voir apparaître instantanément
  3. Essayez de publier différents messages pour observer la communication en direct

Exemple - dans le Terminal 2 :

PUBLISH mychannel "This is message 2"
PUBLISH mychannel "Real-time messaging works!"

Important : Gardez les Terminal 1 et Terminal 2 avec leurs sessions redis-cli actives. Nous continuerons à utiliser les deux terminaux dans les étapes suivantes.

Se désabonner avec UNSUBSCRIBE

Dans cette étape, vous apprendrez comment vous désabonner d'un canal dans Redis en utilisant la commande UNSUBSCRIBE. Se désabonner retire un client de la liste des abonnés d'un canal spécifique, l'empêchant de recevoir les messages publiés ultérieurement sur ce canal.

Terminal 1 : Quitter le mode d'abonnement

Accédez au Terminal 1 (où vous êtes actuellement abonné à mychannel). Vous devriez voir le statut de l'abonnement indiquant "Reading messages... (press Ctrl-C to quit)".

Étant donné que le Terminal 1 est en mode d'abonnement, vous ne pouvez pas exécuter directement les commandes Redis habituelles. Pour vous désabonner, vous devez d'abord quitter le mode d'abonnement :

  1. Appuyez sur Ctrl+C pour quitter le mode d'abonnement.

  2. Vous devriez constater que la session redis-cli se termine et retourne à l'invite du terminal.

  3. reconnectez-vous à Redis :

    redis-cli
  4. Vous pouvez maintenant exécuter la commande UNSUBSCRIBE (bien que ce ne soit pas nécessaire car la déconnexion vous a déjà désabonné) :

    UNSUBSCRIBE mychannel

Note : Lorsque vous avez appuyé sur Ctrl+C, vous vous êtes en fait déjà déconnecté de tous les abonnements. La commande UNSUBSCRIBE est présentée à titre démonstratif, mais en pratique, la déconnexion vous désabonne automatiquement de tous les canaux.

La sortie dans le Terminal 1 ressemblera à ceci :

1) "unsubscribe"
2) "mychannel"
3) (integer) 0

Analysons la sortie :

  • "unsubscribe" : Ceci indique que vous vous êtes désabonné d'un canal.
  • "mychannel" : C'est le nom du canal dont vous vous êtes désabonné.
  • (integer) 0 : C'est le nombre de canaux auxquels vous êtes actuellement abonné. Il est maintenant de 0 car vous vous êtes désabonné de mychannel.

Terminal 2 : Tester la publication après désabonnement

Passez maintenant au Terminal 2 et publiez un autre message sur mychannel :

PUBLISH mychannel "Is anyone still there?"

La sortie dans le Terminal 2 sera :

(integer) 0

Ceci indique qu'aucun client n'a reçu le message car vous vous êtes désabonné du canal dans le Terminal 1.

Vérifier qu'aucun message n'a été reçu

Regardez le Terminal 1 – vous devriez remarquer qu'aucun nouveau message n'apparaît car vous vous êtes désabonné du canal.

Ceci démontre comment se désabonner d'un canal vous empêche de recevoir les messages publiés ultérieurement sur ce canal, tandis que l'éditeur peut toujours envoyer des messages (mais personne ne les recevra).

Important : Gardez les deux terminaux et leurs sessions redis-cli actifs pour la prochaine étape.

S'abonner par motif avec PSUBSCRIBE

Dans cette étape, vous apprendrez à vous abonner à des canaux en utilisant des motifs avec la commande PSUBSCRIBE dans Redis. PSUBSCRIBE vous permet de vous abonner à plusieurs canaux qui correspondent à un motif spécifié. Ceci est utile lorsque vous souhaitez recevoir des messages d'un groupe de canaux liés sans vous abonner à chacun individuellement.

Terminal 1 : S'abonner par motif

Étant donné que vous vous êtes désabonné de mychannel à l'étape précédente, le Terminal 1 devrait maintenant afficher une invite Redis normale.

Dans le Terminal 1, abonnez-vous aux canaux correspondant au motif news.* en utilisant la commande PSUBSCRIBE :

PSUBSCRIBE news.*

La sortie ressemblera à ceci :

Reading messages... (press Ctrl-C to quit)
1) "psubscribe"
2) "news.*"
3) (integer) 1

Analysons la sortie :

  • "psubscribe" : Ceci indique que vous vous êtes abonné avec succès à un motif.
  • "news.*" : C'est le motif auquel vous vous êtes abonné. Le .* est un joker qui correspond à n'importe quels caractères.
  • (integer) 1 : C'est le nombre de motifs auxquels vous êtes actuellement abonné.

Terminal 2 : Publier sur des canaux correspondant au motif

Accédez au Terminal 2 et publiez un message sur le canal news.sports en utilisant la commande PUBLISH :

PUBLISH news.sports "Sports news update!"

La sortie dans le Terminal 2 sera le nombre d'abonnés qui ont reçu le message :

(integer) 1

Observer la correspondance de motif

Revenez au Terminal 1 (où vous vous êtes abonné au motif). Vous devriez voir le message que vous venez de publier :

1) "pmessage"
2) "news.*"
3) "news.sports"
4) "Sports news update!"

Ceci montre :

  • "pmessage" : Indique qu'il s'agit d'un message correspondant à un motif.
  • "news.*" : Le motif qui a correspondu.
  • "news.sports" : Le canal réel sur lequel le message a été publié.
  • "Sports news update!" : Le contenu du message.

Tester plusieurs canaux

Dans le Terminal 2, essayez de publier sur différents canaux qui correspondent au motif :

PUBLISH news.technology "New AI breakthrough!"
PUBLISH news.weather "Sunny skies ahead!"
PUBLISH sports.basketball "This won't match the pattern"

Observez dans le Terminal 1 que seuls les canaux news.* sont reçus, tandis que sports.basketball ne l'est pas car il ne correspond pas au motif news.*.

Important : Gardez les deux terminaux et leurs sessions redis-cli actifs. L'abonnement par motif démontre comment vous pouvez écouter plusieurs canaux liés simultanément.

Résumé

Dans ce laboratoire, vous avez exploré les bases de la messagerie Pub/Sub de Redis. Vous avez appris à vous abonner à des canaux en utilisant la commande SUBSCRIBE, à publier des messages sur des canaux en utilisant la commande PUBLISH, à vous désabonner de canaux en utilisant la commande UNSUBSCRIBE, et à vous abonner à des canaux en utilisant des motifs avec la commande PSUBSCRIBE. Ces commandes sont essentielles pour construire des applications de messagerie en temps réel avec Redis.