Introdução
Neste laboratório, você explorará o sistema de mensagens Pub/Sub do Redis. Você aprenderá a se inscrever em canais, publicar mensagens e cancelar a inscrição. Este laboratório irá guiá-lo pelas operações fundamentais usando os comandos SUBSCRIBE, PUBLISH, UNSUBSCRIBE e PSUBSCRIBE.
Inscrever-se em um Canal com SUBSCRIBE
Nesta etapa, você aprenderá a se inscrever em um canal no Redis usando o comando SUBSCRIBE. Inscrever-se em um canal permite que você receba mensagens publicadas nesse canal. Este é um conceito fundamental no sistema de mensagens Pub/Sub do Redis.
Terminal 1: Inscrever-se no Canal
Abra seu primeiro terminal (chamaremos este de Terminal 1). Você pode usar o terminal Xfce fornecido no ambiente LabEx.
Conecte-se ao servidor Redis usando o comando redis-cli:
redis-cli
Você deverá ver o prompt do Redis: 127.0.0.1:6379>.
Inscreva-se em um canal chamado mychannel usando o comando SUBSCRIBE:
SUBSCRIBE mychannel
A saída será semelhante a esta:
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "mychannel"
3) (integer) 1
Vamos analisar a saída:
"subscribe": Isso indica que você se inscreveu com sucesso em um canal."mychannel": Este é o nome do canal ao qual você se inscreveu.(integer) 1: Este é o número de canais aos quais você está atualmente inscrito.
Importante: Mantenha o Terminal 1 aberto com a sessão do redis-cli ativa e inscrita no canal. NÃO feche este terminal nem pressione Ctrl+C, pois isso o desinscreveria do canal. Usaremos um segundo terminal para publicar mensagens na próxima etapa.
Publicar Mensagens com PUBLISH
Nesta etapa, você aprenderá a publicar mensagens em um canal no Redis usando o comando PUBLISH. Publicar mensagens é a funcionalidade principal do sistema Pub/Sub, permitindo que você envie dados para todos os assinantes de um canal específico.
Terminal 2: Publicar Mensagens
Abra um segundo terminal (chamaremos este de Terminal 2). Você pode abrir uma nova aba no seu terminal Xfce.
Conecte-se ao servidor Redis usando o comando redis-cli:
redis-cli
Você deverá ver o prompt do Redis: 127.0.0.1:6379>.
Agora, publique uma mensagem no canal mychannel usando o comando PUBLISH:
PUBLISH mychannel "Hello, Redis!"
A saída no Terminal 2 será o número de clientes que receberam a mensagem:
(integer) 1
Neste caso, a saída é (integer) 1 porque você tem uma inscrição ativa em mychannel no Terminal 1 da etapa anterior.
Observar a Mensagem no Terminal 1
Agora, volte para o Terminal 1 (onde você se inscreveu em mychannel na Etapa 1). Você deverá ver a mensagem que acabou de publicar exibida em tempo real:
1) "message"
2) "mychannel"
3) "Hello, Redis!"
Isso mostra:
"message": Indica que esta é uma mensagem publicada"mychannel": O canal para o qual a mensagem foi publicada"Hello, Redis!": O conteúdo real da mensagem
Testar Mensagens em Tempo Real
Você pode agora experimentar mensagens em tempo real:
- Volte para o Terminal 2 e publique mais mensagens
- Mude para o Terminal 1 para vê-las aparecer instantaneamente
- Tente publicar mensagens diferentes para observar a comunicação ao vivo
Exemplo - no Terminal 2:
PUBLISH mychannel "This is message 2"
PUBLISH mychannel "Real-time messaging works!"
Importante: Mantenha ambos os Terminais 1 e Terminal 2 com suas sessões do redis-cli ativas. Continuaremos usando ambos os terminais nas próximas etapas.
Cancelar Inscrição com UNSUBSCRIBE
Nesta etapa, você aprenderá como cancelar a inscrição de um canal no Redis usando o comando UNSUBSCRIBE. Cancelar a inscrição remove um cliente da lista de assinantes de um canal específico, impedindo-o de receber mensagens futuras publicadas nesse canal.
Terminal 1: Sair do Modo de Assinatura
Vá para o Terminal 1 (onde você está atualmente inscrito em mychannel). Você deverá ver o status da assinatura mostrando "Reading messages... (press Ctrl-C to quit)".
Como o Terminal 1 está no modo de assinatura, você não pode executar comandos Redis regulares diretamente. Para cancelar a inscrição, você precisa primeiro sair do modo de assinatura:
Pressione
Ctrl+Cpara sair do modo de assinaturaVocê deverá ver que a sessão do redis-cli termina e retorna ao prompt do terminal
Reconecte-se ao Redis:
redis-cliAgora você pode executar o comando
UNSUBSCRIBE(embora não seja necessário, pois a desconexão já cancelou sua inscrição):UNSUBSCRIBE mychannel
Nota: Ao pressionar Ctrl+C, você na verdade já se desconectou de todas as assinaturas. O comando UNSUBSCRIBE é mostrado para fins de demonstração, mas na prática, desconectar cancela automaticamente sua inscrição de todos os canais.
A saída no Terminal 1 será semelhante a esta:
1) "unsubscribe"
2) "mychannel"
3) (integer) 0
Vamos analisar a saída:
"unsubscribe": Isso indica que você cancelou a inscrição de um canal."mychannel": Este é o nome do canal do qual você cancelou a inscrição.(integer) 0: Este é o número de canais aos quais você está atualmente inscrito. Agora é 0 porque você cancelou a inscrição demychannel.
Terminal 2: Testar Publicação Após Cancelamento de Inscrição
Agora mude para o Terminal 2 e publique outra mensagem em mychannel:
PUBLISH mychannel "Is anyone still there?"
A saída no Terminal 2 será:
(integer) 0
Isso indica que nenhum cliente recebeu a mensagem porque você cancelou a inscrição do canal no Terminal 1.
Verificar se Nenhuma Mensagem Foi Recebida
Olhe para o Terminal 1 - você deverá notar que nenhuma nova mensagem aparece porque você cancelou a inscrição do canal.
Isso demonstra como cancelar a inscrição de um canal impede que você receba mensagens futuras publicadas nesse canal, enquanto o publicador ainda pode enviar mensagens (mas ninguém as receberá).
Importante: Mantenha ambos os terminais e suas sessões do redis-cli ativos para a próxima etapa.
Assinar Padrões com PSUBSCRIBE
Nesta etapa, você aprenderá a se inscrever em canais usando padrões com o comando PSUBSCRIBE no Redis. PSUBSCRIBE permite que você se inscreva em múltiplos canais que correspondem a um padrão especificado. Isso é útil quando você deseja receber mensagens de um grupo de canais relacionados sem se inscrever em cada um individualmente.
Terminal 1: Assinar Padrões
Como você cancelou a inscrição em mychannel na etapa anterior, o Terminal 1 agora deve mostrar um prompt regular do Redis.
No Terminal 1, inscreva-se em canais que correspondam ao padrão news.* usando o comando PSUBSCRIBE:
PSUBSCRIBE news.*
A saída será semelhante a esta:
Reading messages... (press Ctrl-C to quit)
1) "psubscribe"
2) "news.*"
3) (integer) 1
Vamos analisar a saída:
"psubscribe": Isso indica que você se inscreveu com sucesso em um padrão."news.*": Este é o padrão ao qual você se inscreveu. O.*é um curinga que corresponde a quaisquer caracteres.(integer) 1: Este é o número de padrões aos quais você está atualmente inscrito.
Terminal 2: Publicar em Canais que Correspondem ao Padrão
Vá para o Terminal 2 e publique uma mensagem no canal news.sports usando o comando PUBLISH:
PUBLISH news.sports "Sports news update!"
A saída no Terminal 2 será o número de assinantes que receberam a mensagem:
(integer) 1
Observar Correspondência de Padrões
Volte para o Terminal 1 (onde você se inscreveu no padrão). Você deverá ver a mensagem que acabou de publicar:
1) "pmessage"
2) "news.*"
3) "news.sports"
4) "Sports news update!"
Isso mostra:
"pmessage": Indica que esta é uma mensagem correspondente a um padrão"news.*": O padrão que correspondeu"news.sports": O canal real para o qual a mensagem foi publicada"Sports news update!": O conteúdo da mensagem
Testar Múltiplos Canais
No Terminal 2, tente publicar em diferentes canais que correspondem ao padrão:
PUBLISH news.technology "New AI breakthrough!"
PUBLISH news.weather "Sunny skies ahead!"
PUBLISH sports.basketball "This won't match the pattern"
Observe no Terminal 1 que apenas os canais news.* são recebidos, enquanto sports.basketball não é, pois não corresponde ao padrão news.*.
Importante: Mantenha ambos os terminais e suas sessões do redis-cli ativas. A inscrição por padrão demonstra como você pode ouvir múltiplos canais relacionados simultaneamente.
Resumo
Neste laboratório, você explorou os fundamentos da mensagem Pub/Sub do Redis. Você aprendeu a se inscrever em canais usando o comando SUBSCRIBE, publicar mensagens em canais usando o comando PUBLISH, cancelar a inscrição em canais usando o comando UNSUBSCRIBE e se inscrever em canais usando padrões com o comando PSUBSCRIBE. Esses comandos são essenciais para construir aplicações de mensagens em tempo real com o Redis.


