Computer >> 컴퓨터 >  >> 프로그래밍 >> Redis

Redis PUBLISH – Redis Pub/Sub 채널에 메시지 발행하는 방법

이 튜토리얼에서는 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는 메시지를 보관하지 않기 때문에, 구독자가 없는 상태에서 발행된 메시지는 복구할 수 없다는 점을 유의해야 합니다.

예제

Redis PUBLISH – 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는 클러스터 환경에서도 동작하지만, 메시지는 클러스터 전체에 브로드캐스트되므로 대량 트래픽 환경에서는 네트워크 부하를 고려해야 합니다.

참고 자료

  1. PUBLISH Command 공식 문서

지금까지 redis-cli를 사용하여 Redis 메시지 브로커에서 메시지를 발행하는 방법에 대해 알아보았습니다. 내용이 도움이 되셨다면 댓글로 의견을 남겨주시고, 주변에도 공유해 주세요!