이 튜토리얼에서는 redis-cli를 사용하여 Redis 메시지 브로커(Message Broker) 시스템에서 메시지를 발행하는 방법을 알아봅니다.
PUBLISH 명령어란?
PUBLISH 명령어는 Redis의 Pub/Sub(발행/구독) 구조에서 지정된 채널(channel)로 메시지를 전송하는 데 사용되는 명령어입니다. 이 명령어는 파이어 앤 포겟(fire-and-forget) 방식으로 동작하며, 메시지를 받은 구독자(subscriber)의 수를 정수 형태로 반환합니다.
문법
Redis PUBLISH 명령어의 기본 문법은 다음과 같습니다.
redis host:port> PUBLISH <channel> <message>
- <channel> : 메시지를 발행할 대상 채널의 이름입니다.
- <message> : 해당 채널로 전송할 메시지 내용입니다.
반환값
- (integer) reply, representing the number of subscriber that received the message.
명령 실행 결과는 (integer) 타입으로 반환되며, 이는 해당 메시지를 정상적으로 수신한 구독자의 수를 의미합니다. 예를 들어 반환값이 3이라면 세 개의 클라이언트가 해당 채널을 구독 중이며 메시지를 받았다는 뜻입니다. 만약 구독자가 하나도 없다면 0이 반환되고, 그 경우 메시지는 어디에도 저장되지 않고 사라집니다. Redis Pub/Sub는 메시지를 보관하지 않기 때문에, 구독자가 없는 상태에서 발행된 메시지는 복구할 수 없다는 점을 유의해야 합니다.
예제

실제 동작 과정을 살펴보겠습니다. 먼저 하나의 터미널에서 채널을 구독하고, 다른 터미널에서 메시지를 발행합니다.
1단계 : 채널 구독하기 (터미널 A)
redis host:port> SUBSCRIBE mychannel
위 명령어를 실행하면 클라이언트가 'mychannel' 채널의 구독자로 등록되고, 해당 채널로 오는 모든 메시지를 실시간으로 수신하게 됩니다.
2단계 : 메시지 발행하기 (터미널 B)
redis host:port> PUBLISH mychannel "Hello, Redis!"
명령어가 성공적으로 실행되면 구독 중인 터미널 A에서 'Hello, Redis!'라는 메시지가 즉시 출력되는 것을 확인할 수 있으며, 발행 측에서는 메시지를 받은 구독자 수인 (integer) 1이 반환됩니다.
활용 시 주의사항
- PUBLISH로 발행된 메시지는 Redis에 저장되지 않으므로, 메시지 유실이 허용되지 않는 서비스라면 Redis Stream 등 다른 방식을 고려하는 것이 좋습니다.
- 채널 이름은 패턴 매칭이 가능한 PSUBSCRIBE와 함께 사용하면 여러 채널을 한 번에 구독할 수 있습니다.
- Pub/Sub는 클러스터 환경에서도 동작하지만, 메시지는 클러스터 전체에 브로드캐스트되므로 대량 트래픽 환경에서는 네트워크 부하를 고려해야 합니다.
참고 자료
- PUBLISH Command 공식 문서
지금까지 redis-cli를 사용하여 Redis 메시지 브로커에서 메시지를 발행하는 방법에 대해 알아보았습니다. 내용이 도움이 되셨다면 댓글로 의견을 남겨주시고, 주변에도 공유해 주세요!