Implementación de Redis-simple del modo de publicación y suscripción

Hay dos roles en el modelo publicar-suscribirse-editor y suscriptor. Se comunican a través de canales. Los suscriptores se suscriben a uno o más canales y el editor envía mensajes a un canal específico. Luego, todos los que se suscriben al canal Los suscriptores recibirán el mensaje.

El editor publica el mensaje en el canal mediante el siguiente comando:

 PUBLISH channel message

Los suscriptores se suscriben al canal con el siguiente comando:

SUBSCRIBE channel [channel …]

Inicie el servicio redis, abra 3 instancias de redis-cli, luego un editor, dos suscriptores, el suscriptor 1 se suscribe a los dos canales canal: 1 y canal: 2 , el suscriptor 2 se suscribe al canal: 2 canal, de la siguiente manera: Inserte la descripción de la imagen aquí
En primer lugar, puede ver que después de que los suscriptores se suscribieron al canal, se muestran resultados.

Aquí hay una explicación para devolver los resultados primero. Los tipos de resultados devueltos se dividen aproximadamente en 3 tipos, cada uno de los cuales contiene 3 valores. El tipo aquí es suscripción. Consulte el resultado devuelto en la figura anterior:

第一个值表示消息的类型,这里是订阅,所以值为subscribe。
第二个值根据消息类型的不同,表示的意思也不同,这里表示订阅成功的频道名称。
第三个值是当前客户端订阅的频道数量,所以订阅者1才会返回2,因为它订阅了两个频道。

El editor publica un mensaje en el canal: 1 canal, y mira la respuesta de los suscriptores, de la siguiente manera:
Inserte la descripción de la imagen aquí

Se descubrió que el suscriptor 1 recibió un mensaje de respuesta, pero el suscriptor 2 no. Esto se debe a que el suscriptor 2 no se suscribió al canal: 1 y luego dejó que el editor publicara mensajes en el canal: 2. La reacción de los suscriptores es la siguiente: Inserte la descripción de la imagen aquí
entonces usted puede primero Eche un vistazo al editor. Anteriormente , al publicar un mensaje en el canal: 1 , arrojaba el resultado 1. Al publicar un mensaje en el canal: 2 esta vez, arrojaba el resultado 2. Si piensa en cuántos suscriptores tienen dos canales, puede saber que El resultado representa el número de suscriptores que recibieron este mensaje.

Se puede encontrar que el mensaje publicado por el editor en el canal: 2 puede ser recibido tanto por el suscriptor 1 como por el suscriptor 2. Consulte la figura anterior para explicar el resultado devuelto:

第一个值表示消息的类型,这里表示接收到的消息,所以值为message。
第二个值根据消息类型的不同,表示的意思也不同,这里表示产生消息的频道名称。
第三个值表示消息的内容。

Si puedes suscribirte, puedes cancelarla naturalmente. El orden para cancelar la suscripción es el siguiente:

UNSUBSCRIBE [channel [channel …]]

如果不指定具体的频道参数,那就会取消对所有频道的订阅。

Sin embargo, debido a la limitación de redis-cli, este comando no puede probar el efecto, así que simplemente hable sobre el significado de los tres valores del resultado devuelto:

第一个值表示成功取消订阅某个频道。
第二个值表示对应的频道名称。
第三个值表示当前客户端订阅的频道数量,一旦这个值变为0,客户端就会退出订阅状态。

PD: ¿Cuál es el estado de la suscripción?

Una vez que el cliente se haya suscrito a un determinado canal o canales, ingresará al estado de suscripción. El cliente en el estado de suscripción solo puede usar los cuatro comandos que pertenecen al modo "publicar / suscribirse" de SUBSCRIBE, UNSUBSCRIBE, PSUBSCRIBE y PUNSUBSCRIBE, y usar otros comandos. El comando informará un error.

Supongo que te gusta

Origin blog.csdn.net/weixin_38106322/article/details/108543069
Recomendado
Clasificación