Maison >base de données >Redis >Notes d'étude Redis publier et s'abonner

Notes d'étude Redis publier et s'abonner

WBOY
WBOYavant
2022-06-17 13:56:282032parcourir

Cet article vous apporte des connaissances pertinentes sur Redis, qui introduit principalement les problématiques liées à la publication et à l'abonnement. Redis publier et s'abonner (pub/sub) est un mode de communication par message : l'expéditeur (pub) envoie un message, l'abonné (sub). ) reçoit le message. Jetons-y un coup d'oeil. J'espère que cela sera utile à tout le monde.

Notes d'étude Redis publier et s'abonner

Apprentissage recommandé : Tutoriel vidéo Redis

Redis publier et s'abonner (pub/sub) est un modèle de communication par message : l'expéditeur (pub) envoie un message et l'abonné (sub) reçoit le message .

Les clients Redis peuvent s'abonner à n'importe quel nombre de chaînes.

Graphique du message d'abonnement/publication :

Premier objet : l'expéditeur du message. Deuxième objet : canal. Le troisième objet : abonné au message.

Notes détude Redis publier et sabonner

La figure suivante montre la relation entre le canal canal1 et les trois clients abonnés à ce canal - client2, client5 et client1 :

Notes détude Redis publier et sabonner

Lorsqu'un nouveau message est envoyé au canal canal1 via la commande PUBLISH, cela Le message sera envoyé aux trois clients qui y sont abonnés :

Notes détude Redis publier et sabonner

Commande Description
Commande Publier un message de canal envoie des informations au canal spécifié.
SUBSCRIBE canal [canal…] Abonnez-vous aux informations d'une ou plusieurs chaînes données.
UNSUBSCRIBE canal [canal…] fait référence à la désinscription d'un canal donné.
[Modèle PUNSUBSCRIBE [motif …]] Désabonnez-vous de toutes les chaînes du modèle donné.
[Argument PUBSUB [argument…] Affichez l'état du système d'abonnement et de publication.
Modèle PSUBSCRIBE [motif …] Abonnez-vous à une ou plusieurs chaînes qui correspondent au modèle donné.

Test

Abonné :

127.0.0.1:6379> subscribe mianbao 			# 订阅频道 mianbao
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "mianbao"
3) (integer) 1
# 等待读取推送的消息
1) "message"		# 消息
2) "mianbao"		# 频道
3) "hello"			# 消息内容
1) "message"
2) "mianbao"
3) "hello redis"

Expéditeur :

127.0.0.1:6379> publish mianbao "hello"			# 发送消息到频道		
(integer) 1
127.0.0.1:6379> publish mianbao "hello redis"
(integer) 1

Principe :

Redis est implémenté en C. En analysant le fichier pubsub.c dans le code source Redis, nous pouvons comprendre la publication et l'abonnement Les mécanismes sous-jacents sont utilisés pour approfondir la compréhension de Redis.

Redis implémente des fonctions de publication et d'abonnement via des commandes telles que PUBLISH, SUBSCRIBE et PSUBSCRIBE.

Après vous être abonné à un canal via la commande SUBSCRIBE, un dictionnaire est conservé dans redis-server. La clé du dictionnaire est chaque canal (canal) et la valeur du dictionnaire est une liste chaînée. qui sont abonnés à cette chaîne. La clé de la commande SUBSCRIBE est d'ajouter le client à la liste d'abonnement d'un canal donné.

Envoyez un message à l'abonné via la commande PUBLISH. Le serveur Redis utilisera le canal donné comme clé, recherchera la liste chaînée de tous les clients abonnés à ce canal dans le dictionnaire de canaux qu'il gère, parcourra la liste chaînée et publier le message À tous les abonnés.

Pub/Sub signifie littéralement publier (Publier) et s'abonner (S'abonner). Dans Redis, vous pouvez configurer la publication de messages et l'abonnement aux messages pour une certaine valeur de clé, lorsqu'un message est publié sur une valeur de clé, tous les clients qui s'abonnent. à celui-ci recevra le message correspondant. L'utilisation la plus évidente de cette fonction est celle d'un système de messagerie en temps réel, tel qu'un chat instantané ordinaire, un chat de groupe et d'autres fonctions.


Pour des scénarios un peu plus complexes, nous utiliserons un middleware de messages : RabbitMQ, RocketMQ, ActiveMQ, kafka

Apprentissage recommandé : Tutoriel vidéo Redis

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer