Implementação simples do Redis do modo de publicação e assinatura

Existem duas funções no editor-modelo publicar-assinar e no assinante. Eles se comunicam por meio de canais. Os assinantes se inscrevem em um ou mais canais e o editor envia mensagens para o canal especificado. Em seguida, todos aqueles que se inscrevem no canal Os assinantes receberão a mensagem.

O editor publica mensagens no canal com o seguinte comando:

 PUBLISH channel message

Os assinantes se inscrevem no canal com o seguinte comando:

SUBSCRIBE channel [channel …]

Inicie o serviço redis, abra 3 instâncias redis-cli, em seguida, um editor, dois assinantes, o assinante 1 se inscreve nos dois canais canal: 1 e canal: 2 , o assinante 2 se inscreve no canal: 2 canal, da seguinte maneira: Insira a descrição da imagem aqui
Em primeiro lugar, você pode ver que, após os assinantes se inscreverem no canal, os resultados são retornados.

Aqui está uma explicação para retornar os resultados primeiro. Os tipos de resultados retornados são divididos aproximadamente em 3 tipos, cada um dos quais contém 3 valores. O tipo aqui é assinatura. Consulte o resultado retornado na figura acima:

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

O editor publica uma mensagem para o canal: 1 canal, e analisa a resposta dos assinantes da seguinte forma:
Insira a descrição da imagem aqui

Os inscritos encontraram 1 mensagem é retornada, e os inscritos 2 Não, isso é porque os inscritos não se inscrevem em 2 canais: 1 canal, para deixar o canal do editor : 2 canais anunciaram as reações dos assinantes da seguinte forma: Insira a descrição da imagem aqui
Neste ponto, você pode primeiro Olhe para o editor. Anteriormente , ao publicar uma mensagem no canal: 1 , ele retornou o resultado 1. Ao publicar uma mensagem no canal: 2, desta vez, retornou o resultado 2. Se você pensar em quantos assinantes existem em ambos os canais, você pode saber que O resultado representa o número de assinantes que receberam esta mensagem.

Pode ser verificado que a mensagem publicada pelo editor no canal: 2 pode ser recebida tanto pelo assinante 1 quanto pelo assinante 2. Consulte a figura acima para explicar o resultado retornado:

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

Se você pode assinar, você pode cancelar naturalmente. A ordem para cancelar a assinatura é a seguinte:

UNSUBSCRIBE [channel [channel …]]

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

No entanto, devido à limitação de redis-cli, este comando não pode testar o efeito, então simplesmente fale sobre o significado dos três valores do resultado retornado:

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

PS: Qual é o status da assinatura?

Depois que o cliente se inscreve em um determinado canal ou em alguns canais, ele entra no estado de inscrição. O cliente no estado de inscrição só pode usar os quatro comandos que pertencem ao modo "publicar / assinar" de SUBSCRIBE, UNSUBSCRIBE, PSUBSCRIBE e PUNSUBSCRIBE e usar outros comandos. O comando reportará um erro.

Acho que você gosta

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