Introduction
Dans ce laboratoire, vous allez découvrir 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 à l’aide des commandes SUBSCRIBE, PUBLISH, UNSUBSCRIBE et PSUBSCRIBE.
S’abonner à un canal avec SUBSCRIBE
Dans cette étape, vous apprendrez à vous abonner à un canal Redis à l’aide de la commande SUBSCRIBE. L’abonnement à un canal vous permet de recevoir les messages qui y sont publiés. Il s’agit d’un concept fondamental du système de messagerie Pub/Sub de Redis.
Terminal 1 : s’abonner à un canal
Ouvrez votre premier terminal (que nous appellerons Terminal 1). Vous pouvez utiliser le terminal Xfce fourni dans l’environnement LabEx.
Connectez-vous au serveur Redis à l’aide de la commande redis-cli :
redis-cli
Vous devriez voir l’invite Redis : 127.0.0.1:6379>.
Abonnez-vous à un canal nommé mychannel à l’aide de la commande SUBSCRIBE :
SUBSCRIBE mychannel
La sortie devrait ressembler à ceci :
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "mychannel"
3) (integer) 1
Voici comment interpréter cette sortie :
"subscribe": indique que vous vous êtes bien abonné à un canal."mychannel": correspond au nom du canal auquel vous vous êtes abonné.(integer) 1: indique le nombre de canaux auxquels vous êtes actuellement abonné.
Important : laissez le Terminal 1 ouvert, avec la session
redis-cliactive et abonnée au canal. Ne fermez pas ce terminal et n’appuyez pas sur Ctrl+C, car cela vous désabonnerait du canal. Nous utiliserons un deuxième terminal pour publier des messages à l’étape suivante.
Publier des messages avec PUBLISH
Dans cette étape, vous apprendrez à publier des messages sur un canal Redis à l’aide de la commande PUBLISH. La publication de messages constitue la fonction centrale du système Pub/Sub : elle permet d’envoyer des données à tous les abonnés d’un canal donné.
Terminal 2 : publier des messages
Ouvrez un deuxième terminal (que nous appellerons Terminal 2). Vous pouvez ouvrir un nouvel onglet dans votre terminal Xfce.
Connectez-vous au serveur Redis à l’aide de la commande redis-cli :
redis-cli
Vous devriez voir l’invite Redis : 127.0.0.1:6379>.
Publiez maintenant un message sur le canal mychannel à l’aide de la commande PUBLISH :
PUBLISH mychannel "Hello, Redis!"
La sortie du Terminal 2 indiquera le nombre de clients ayant reçu le message :
(integer) 1
Dans ce cas, la sortie est (integer) 1, car un abonnement actif à mychannel est maintenu dans le Terminal 1 depuis l’étape précédente.
Observer le message dans le Terminal 1
Retournez maintenant au Terminal 1 (dans lequel vous vous êtes abonné à mychannel à l’étape 1). Vous devriez voir apparaître en temps réel le message que vous venez de publier :
1) "message"
2) "mychannel"
3) "Hello, Redis!"
Cette sortie indique :
"message": il s’agit d’un message publié."mychannel": le canal sur lequel le message a été publié."Hello, Redis!": le contenu du message.
Tester la messagerie en temps réel
Vous pouvez maintenant expérimenter la messagerie en temps réel. Retournez au Terminal 2 pour publier d’autres messages, puis passez au Terminal 1 afin de les voir apparaître instantanément. Essayez 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 sessions
redis-cliactives dans les Terminal 1 et Terminal 2. Nous continuerons à utiliser ces deux terminaux lors des prochaines étapes.
Se désabonner avec UNSUBSCRIBE
Dans cette étape, vous apprendrez à vous désabonner d’un canal Redis à l’aide de la commande UNSUBSCRIBE. Le désabonnement retire un client de la liste des abonnés d’un canal donné et l’empêche ainsi de recevoir les prochains messages publiés sur ce canal.
Terminal 1 : quitter le mode abonnement
Rendez-vous dans le Terminal 1 (celui dans lequel vous êtes actuellement abonné à mychannel). Vous devriez voir l’état de l’abonnement avec le message « Reading messages... (press Ctrl-C to quit) ».
Comme le Terminal 1 est en mode abonnement, vous ne pouvez pas y exécuter directement les commandes Redis ordinaires. Appuyez sur Ctrl+C pour quitter ce mode et revenir à l’invite du terminal. Reconnectez-vous ensuite à Redis :
redis-cli
Exécutez maintenant la commande UNSUBSCRIBE. Même si la déconnexion a déjà supprimé l’abonnement, cette commande permet d’illustrer la réponse de désabonnement de Redis :
UNSUBSCRIBE mychannel
Remarque : lorsque vous avez appuyé sur Ctrl+C, vous vous êtes déjà déconnecté de tous vos abonnements. La commande UNSUBSCRIBE est présentée à titre d’exemple ; en pratique, la déconnexion vous désabonne automatiquement de tous les canaux.
La sortie du Terminal 1 devrait ressembler à ceci :
1) "unsubscribe"
2) "mychannel"
3) (integer) 0
Voici comment interpréter cette sortie :
"unsubscribe": indique que vous vous êtes désabonné d’un canal."mychannel": correspond au nom du canal dont vous vous êtes désabonné.(integer) 0: indique le nombre de canaux auxquels vous êtes actuellement abonné. Il est maintenant égal à 0, puisque vous vous êtes désabonné demychannel.
Terminal 2 : tester la publication après le désabonnement
Passez maintenant au Terminal 2 et publiez un nouveau message sur mychannel :
PUBLISH mychannel "Is anyone still there?"
La sortie du Terminal 2 sera :
(integer) 0
Cela indique qu’aucun client n’a reçu le message, puisque vous vous êtes désabonné du canal dans le Terminal 1.
Vérifier qu’aucun message n’est reçu
Observez le Terminal 1 : aucun nouveau message ne devrait apparaître, puisque vous vous êtes désabonné du canal.
Vous constatez ainsi que le désabonnement d’un canal empêche la réception des messages qui y sont publiés, tandis que l’émetteur peut toujours envoyer des messages — même si personne ne les recevra.
Important : gardez les deux terminaux et leurs sessions
redis-cliactives pour l’étape suivante.
S’abonner à un motif avec PSUBSCRIBE
Dans cette étape, vous apprendrez à vous abonner à des canaux correspondant à un motif à l’aide de la commande PSUBSCRIBE de Redis. PSUBSCRIBE permet de s’abonner simultanément à plusieurs canaux correspondant à un motif donné. Cette fonctionnalité est utile lorsque vous souhaitez recevoir les messages d’un ensemble de canaux associés sans devoir vous abonner à chacun d’eux individuellement.
Terminal 1 : abonnement à un motif
Comme 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.* à l’aide de la commande PSUBSCRIBE :
PSUBSCRIBE news.*
La sortie devrait ressembler à ceci :
Reading messages... (press Ctrl-C to quit)
1) "psubscribe"
2) "news.*"
3) (integer) 1
Voici comment interpréter cette sortie :
"psubscribe": indique que vous vous êtes bien abonné à un motif."news.*": correspond au motif auquel vous vous êtes abonné..*est un caractère générique qui correspond à n’importe quelle suite de caractères.(integer) 1: indique le nombre de motifs auxquels vous êtes actuellement abonné.
Terminal 2 : publier sur des canaux correspondant au motif
Rendez-vous dans le Terminal 2 et publiez un message sur le canal news.sports à l’aide de la commande PUBLISH :
PUBLISH news.sports "Sports news update!"
La sortie du Terminal 2 indiquera le nombre d’abonnés ayant reçu le message :
(integer) 1
Observer la correspondance avec le motif
Revenez au Terminal 1 (dans lequel vous vous êtes abonné au motif). Vous devriez voir apparaître le message que vous venez de publier :
1) "pmessage"
2) "news.*"
3) "news.sports"
4) "Sports news update!"
Cette sortie indique :
"pmessage": il s’agit d’un message correspondant à un motif."news.*": le motif qui correspond au canal."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 des messages sur différents canaux correspondant 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. sports.basketball ne l’est pas, car il ne correspond pas au motif news.*.
Important : gardez les deux terminaux et leurs sessions
redis-cliactives. L’abonnement par motif montre comment écouter simultanément plusieurs canaux associés.
Résumé
Dans ce laboratoire, vous avez découvert les principes fondamentaux de la messagerie Pub/Sub de Redis. Vous avez appris à vous abonner à des canaux avec la commande SUBSCRIBE, à y publier des messages avec PUBLISH, à vous en désabonner avec UNSUBSCRIBE et à utiliser des motifs avec PSUBSCRIBE. Ces commandes sont essentielles pour créer des applications de messagerie en temps réel avec Redis.


