Introdução
Neste laboratório, você explorará o sistema de mensageria Pub/Sub do Redis. Você aprenderá a se inscrever em canais, publicar mensagens e cancelar inscrições. O laboratório guiará você 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 do Redis usando o comando SUBSCRIBE. Inscrever-se em um canal permite receber as mensagens publicadas nele. Esse é um conceito fundamental do sistema de mensageria Pub/Sub do Redis.
Terminal 1: Inscrever-se no canal
Abra o primeiro terminal (que chamaremos de Terminal 1). Você pode usar o terminal Xfce disponibilizado 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
Veja o que cada parte da saída significa:
"subscribe": indica que você se inscreveu com sucesso em um canal."mychannel": é o nome do canal em que você se inscreveu.(integer) 1: é o número de canais nos quais você está inscrito atualmente.
Importante: mantenha o Terminal 1 aberto, com a sessão do redis-cli ativa e inscrita no canal. NÃO feche esse terminal nem pressione Ctrl+C, pois isso cancelaria sua inscrição no 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 do Redis usando o comando PUBLISH. A publicação de mensagens é a principal funcionalidade do sistema Pub/Sub, permitindo enviar dados a todos os assinantes de um canal específico.
Terminal 2: Publicar mensagens
Abra um segundo terminal (que chamaremos de Terminal 2). Você pode abrir uma nova aba no 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 existe uma inscrição ativa em mychannel no Terminal 1, criada na etapa anterior.
Observar a mensagem no Terminal 1
Agora volte ao Terminal 1 (onde você se inscreveu em mychannel na etapa 1). A mensagem que você acabou de publicar deverá aparecer em tempo real:
1) "message"
2) "mychannel"
3) "Hello, Redis!"
Isso indica:
"message": informa que esta é uma mensagem publicada."mychannel": é o canal no qual a mensagem foi publicada."Hello, Redis!": é o conteúdo da mensagem.
Testar a mensageria em tempo real
Agora você pode experimentar a troca de mensagens em tempo real. Volte ao Terminal 2 e publique mais mensagens; em seguida, alterne para o Terminal 1 para vê-las aparecer instantaneamente. Experimente 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 o Terminal 1 e o Terminal 2 abertos, com as respectivas sessões do redis-cli ativas. Continuaremos usando os dois terminais nas próximas etapas.
Cancelar a inscrição com UNSUBSCRIBE
Nesta etapa, você aprenderá a cancelar a inscrição em um canal do Redis usando o comando UNSUBSCRIBE. O cancelamento remove um cliente da lista de assinantes de um canal específico, impedindo-o de receber novas mensagens publicadas nesse canal.
Terminal 1: Sair do modo de inscrição
Acesse o Terminal 1 (onde você está inscrito atualmente em mychannel). Você deverá ver o status da inscrição com a mensagem "Reading messages... (press Ctrl-C to quit)".
Como o Terminal 1 está no modo de inscrição, não é possível executar comandos comuns do Redis diretamente. Pressione Ctrl+C para sair desse modo e retornar ao prompt do terminal. Em seguida, reconecte-se ao Redis:
redis-cli
Agora execute o comando UNSUBSCRIBE. Embora a desconexão já tenha removido a inscrição, este comando demonstra a resposta de cancelamento de inscrição do Redis:
UNSUBSCRIBE mychannel
Observação: ao pressionar Ctrl+C, você já havia sido desconectado de todas as inscrições. O comando UNSUBSCRIBE é apresentado apenas para fins demonstrativos; na prática, a desconexão cancela automaticamente sua inscrição em todos os canais.
A saída no Terminal 1 será semelhante a esta:
1) "unsubscribe"
2) "mychannel"
3) (integer) 0
Veja o que cada parte da saída significa:
"unsubscribe": indica que você cancelou a inscrição em um canal."mychannel": é o nome do canal cuja inscrição foi cancelada.(integer) 0: é o número de canais nos quais você está inscrito atualmente. Agora esse número é 0 porque você cancelou a inscrição emmychannel.
Terminal 2: Testar a publicação após cancelar a inscrição
Agora alterne 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, pois você cancelou a inscrição no canal usando o Terminal 1.
Confirmar que nenhuma mensagem foi recebida
Observe o Terminal 1: nenhuma mensagem nova deverá aparecer, pois você cancelou a inscrição no canal.
Isso demonstra que cancelar a inscrição em um canal impede o recebimento de novas mensagens publicadas nele, enquanto o publicador ainda pode enviar mensagens (mas ninguém as receberá).
Importante: mantenha os dois terminais e suas respectivas sessões do redis-cli ativos para a próxima etapa.
Inscrição por padrão com PSUBSCRIBE
Nesta etapa, você aprenderá a se inscrever em canais usando padrões com o comando PSUBSCRIBE do Redis. O comando PSUBSCRIBE permite acompanhar vários canais que correspondam a um padrão especificado. Isso é útil quando você deseja receber mensagens de um grupo de canais relacionados sem precisar se inscrever em cada um individualmente.
Terminal 1: Inscrição por padrão
Como você cancelou a inscrição em mychannel na etapa anterior, o Terminal 1 deverá exibir novamente o prompt normal do Redis.
No Terminal 1, inscreva-se nos canais que correspondem 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
Veja o que cada parte da saída significa:
"psubscribe": indica que você se inscreveu com sucesso em um padrão."news.*": é o padrão ao qual você se inscreveu. O.*é um curinga que corresponde a qualquer sequência de caracteres.(integer) 1: é o número de padrões aos quais você está inscrito atualmente.
Terminal 2: Publicar em canais correspondentes ao padrão
Acesse 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 a correspondência do padrão
Volte ao Terminal 1 (onde você se inscreveu no padrão). A mensagem que você acabou de publicar deverá aparecer:
1) "pmessage"
2) "news.*"
3) "news.sports"
4) "Sports news update!"
Isso indica:
"pmessage": informa que esta é uma mensagem correspondente a um padrão."news.*": é o padrão que correspondeu à mensagem."news.sports": é o canal específico no qual a mensagem foi publicada."Sports news update!": é o conteúdo da mensagem.
Testar vários canais
No Terminal 2, tente publicar em diferentes canais que correspondam 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 as mensagens dos canais news.* são recebidas. A mensagem de sports.basketball não será recebida porque esse canal não corresponde ao padrão news.*.
Importante: mantenha os dois terminais e suas respectivas sessões do redis-cli ativos. A inscrição por padrão demonstra como ouvir simultaneamente vários canais relacionados.
Resumo
Neste laboratório, você explorou os fundamentos da mensageria Pub/Sub do Redis. Você aprendeu a se inscrever em canais usando o comando SUBSCRIBE, publicar mensagens em canais usando o comando PUBLISH, cancelar inscrições em canais usando o comando UNSUBSCRIBE e se inscrever em canais por meio de padrões com o comando PSUBSCRIBE. Esses comandos são essenciais para criar aplicações de mensageria em tempo real com o Redis.


