Un seul utilisateur peut s'abonner à plusieurs canaux et afficher les messages des éditeurs envoyés à ce canal. Ils peuvent également se désabonner de la chaîne à tout moment.
Ce tutoriel apprendra à implémenter un modèle de publication simple à l'aide de redis.
Il est bon de noter que nous utiliserons les commandes Redis natives et non un code personnalisé dans Python, Ruby, JavaScript ou autres.
Commandes redis pub-sub.
Lorsque vous travaillez avec le modèle de publication-subscription dans Redis, deux commandes principales entrent en jeu:
Ces commandes sont simples et décrivent la fonction qu'ils entreprennent. Par exemple, la commande abonnée est utilisée pour souscrire un client à un canal ou un canal spécifique.
La commande Publish permet à un expéditeur ou à un éditeur d'envoyer un message à un nombre spécifique de canaux.
Modèle de base de pub-sub
Ce tutoriel mettra en œuvre un modèle de pub simple pour montrer comment il fonctionne dans Redis.
Pour cela, vous aurez besoin d'un cluster redis opérationnel sur votre système.
Commencez par ouvrir trois séances de terminal et lancez le redis CLI dans chacun d'eux.
Une fois que vous avez tous les terminaux ouverts et configurés, utilisez l'un des terminaux pour vous abonner à un canal.
La commande d'abonnement prend le nom de la chaîne comme argument. La syntaxe générale peut être représentée comme:
S'ABONNER
Le nom dépendra entièrement de vous, et vous pouvez le nommer ce que vous voulez. Par exemple, dans la commande ci-dessous, nous souscrivons à un canal appelé Linuxhint.
127.0.0.1: 6379> Abonnez-vous Linuxhint
Messages de lecture… (Appuyez sur Ctrl-C pour arrêter)
1) "abonner"
2) "Linuxhint"
3) (entier) 1
Dans l'exemple ci-dessus, nous souscrivons à un canal appelé Linuxhint, et nous pouvons commencer à recevoir tous les messages publiés sur ce canal.
Utilisez-le pour publier un message sur le canal Linuxhint dans le deuxième terminal.
Utilisez la commande Publish suivie du nom de la chaîne et du message pour publier.
Par exemple:
127.0.0.1: 6379> Publier Linuxhint "Bonjour à tous!"
(entier) 1
Faites attention au premier terminal et exécutez la commande ci-dessus. Vous remarquerez que le message apparaît automatiquement sur la chaîne où l'utilisateur s'est abonné.
Un exemple de sortie sur le terminal abonné est le cas indiqué:
1) "Message"
2) "Linuxhint"
3) "Bonjour à tous!"
Il contient le type, dans ce cas, un message, le canal et le contenu réel du message.
Remarque: Lorsque vous devez publier un message, vous pouvez l'enfermer en guillemets et Redis le traitera comme un seul message plutôt que comme des arguments de commandement.
Dans le troisième terminal, nous l'utiliserons pour s'abonner à plusieurs canaux en utilisant la commande PSUBScribe.
La commande psubscribe prend un modèle spécifique et souscrit l'utilisateur à ces canaux.
Par exemple, pour vous abonner à tous les canaux qui commencent par les caractères Linux, nous pouvons définir la commande comme:
127.0.0.1: 6379> PSUBSCribe Linux *
Messages de lecture… (Appuyez sur Ctrl-C pour arrêter)
1) "Poubscribe"
2) "Linux *"
3) (entier) 1
Une fois que nous exécutons la commande ci-dessus, si nous publions un message à n'importe quel canal avec le nom Linux, l'abonné (dans le terminal 3) recevra le message.
Par exemple, dans le deuxième terminal, exécutez les commandes suivantes:
127.0.0.1: 6379> Publier Linuxuser "pour les canaux LinuxUser"
127.0.0.1: 6379> Publier Linuxhint "pour les canaux LinuxHint"
127.0.0.1: 6379> Publier LinuxCommander "pour les canaux LinuxCommander"
Faites maintenant attention au troisième terminal avec le modèle souscrit. Vous remarquerez que l'abonné de ce terminal reçoit les trois messages tandis que celui du terminal 1 ne reçoit que le message envoyé au canal "Linuxhint".
Comme vous pouvez le voir, la commande PSUBCRIME s'abonne aux canaux qui correspondent à un modèle spécifique.
Fermeture
Ce guide a examiné les bases de l'utilisation du modèle Redis Publish-Subscribe. Bien que le guide ne couvre que les fondamentaux, vous pouvez le développer pour créer des applications en temps réel personnalisées.