이번 튜토리얼에서는 redis-cli를 사용해 Redis 메시지 브로커 시스템에서 하나 이상의 채널을 동시에 구독하는 방법을 알아보겠습니다.
SUBSCRIBE 명령어란?
SUBSCRIBE 명령어는 클라이언트를 Redis 메시지 브로커 시스템의 지정된 하나 이상의 채널에 구독시키는 데 사용됩니다. 클라이언트가 SUBSCRIBE 명령어를 실행하면 구독 상태(subscribed state)에 진입하며, 해당 채널들의 메시지를 수신 대기하게 됩니다. 다른 클라이언트가 지정된 채널에 발행(PUBLISH)한 메시지는 Redis가 해당 채널을 구독 중인 모든 클라이언트에게 자동으로 푸시합니다.
구독 상태에서의 제약 사항
클라이언트가 구독 상태에 있는 동안에는 SUBSCRIBE, PSUBSCRIBE, UNSUBSCRIBE, PUNSUBSCRIBE, PING, QUIT 명령어를 제외한 다른 명령어를 실행할 수 없습니다. 특히 redis-cli 환경에서는 구독 상태에 진입한 후 어떤 명령어도 입력받지 않으며, 오직 Ctrl + C 키로만 해당 상태를 빠져나올 수 있습니다.
구문(Syntax)
redis host:port> SUBSCRIBE <channel> [ <channel> ]
구독하고자 하는 채널 이름을 공백으로 구분하여 여러 개 나열하면 한 번에 모두 구독할 수 있습니다.
출력(Output)
- (array) 3개의 요소를 가진 배열 응답
푸시된 메시지 형식
수신되는 메시지는 세 개의 요소로 구성된 배열 응답입니다. 배열의 첫 번째 요소는 아래 두 가지 종류 중 하나입니다.
- subscribe : 두 번째 요소에 지정된 채널의 구독에 성공했다는 의미입니다. 세 번째 요소는 현재 클라이언트가 구독 중인 채널의 총 개수를 나타냅니다.
- message : 다른 클라이언트가 PUBLISH 명령어로 발행한 메시지를 수신했음을 의미합니다. 두 번째 요소는 메시지가 발행된 원본 채널의 이름이며, 세 번째 요소는 실제 메시지 본문(payload)입니다.
예제(Example)

참고 자료(References)
- Redis 공식 문서 – SUBSCRIBE Command Docs
지금까지 redis-cli를 사용해 Redis 메시지 브로커에서 하나 또는 여러 개의 채널을 구독하는 방법을 살펴보았습니다. 이 글이 도움이 되었다면 댓글로 의견을 남겨주시고, 주변에도 널리 공유해 주세요!