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

Redis PSUBSCRIBE 명령어 완벽 가이드 – Pub/Sub에서 여러 패턴 구독하기

이 튜토리얼에서는 redis-cli를 사용하여 Redis 메시지 브로커 시스템에서 여러 패턴을 동시에 구독하는 방법을 알아보겠습니다.

PSUBSCRIBE 명령어란?

PSUBSCRIBE 명령어는 클라이언트를 하나 이상의 패턴(pattern)에 구독시켜, 지정된 패턴과 이름이 일치하는 채널로 발행되는 모든 메시지를 수신할 수 있게 해주는 명령어입니다. 패턴은 glob 스타일로 지정합니다.

SUBSCRIBE 명령어와 마찬가지로, 클라이언트가 PSUBSCRIBE 명령어를 실행하면 구독 상태(subscribed state)에 진입하여 구독한 패턴을 계속 리스닝하게 됩니다. 이후 다른 클라이언트가 구독 중인 패턴과 일치하는 이름의 채널에 메시지를 발행하면, Redis가 해당 메시지를 클라이언트에게 자동으로 푸시(push)해 줍니다.

구독 상태에서의 제약 사항

클라이언트가 구독 상태에 있을 때는 SUBSCRIBE, PSUBSCRIBE, UNSUBSCRIBE, PUNSUBSCRIBE, PING, QUIT 명령어 외에는 다른 어떤 명령어도 실행할 수 없습니다. redis-cli 환경에서는 구독 상태에 진입한 후 다른 명령어 입력이 차단되며, Ctrl + C 키로만 해당 상태를 빠져나올 수 있습니다.

Glob 스타일 패턴 종류

  1. * (별표) 와일드카드 : 공백을 포함한 0개 이상의 임의 문자와 매칭됩니다. 예를 들어 foo*는 fooccc, foo, fooq 등과 일치합니다.
  2. ? (물음표) 와일드카드 : 공백을 포함해 정확히 한 개의 임의 문자와 매칭됩니다. 예를 들어 f?o는 fao, fbo, fco 등과 일치합니다.
  3. [list] (대괄호) 와일드카드 : 목록에 포함된 문자 중 정확히 한 개와 매칭됩니다. 예를 들어 f[abc]o는 fao, fbo, fco와 일치합니다.

특수 문자를 패턴이 아닌 일반 문자로 취급하려면 \(백슬래시)를 사용하여 이스케이프 처리하면 됩니다.

PSUBSCRIBE 명령어 문법

redis host:port> PSUBSCRIBE <pattern> [ <pattern> ]

패턴은 공백으로 구분하여 여러 개를 한 번에 지정할 수 있습니다.

응답 형식(Output)

- (배열) PSUBSCRIBE 명령어 실행 시: 3개 요소를 가진 배열 응답
- (배열) 클라이언트가 메시지를 수신할 때: 4개 요소를 가진 배열 응답

푸시된 메시지의 구조

배열 응답의 첫 번째 요소는 다음 두 가지 유형 중 하나입니다.

  1. psubscribe (3개 요소) : 패턴 구독이 성공적으로 완료되었음을 의미합니다. 두 번째 요소는 구독에 성공한 패턴이며, 세 번째 요소는 현재 구독 중인 패턴의 총 개수입니다.
  2. pmessage (4개 요소) : 다른 클라이언트가 발행한 PUBLISH 명령어의 결과로 수신된 메시지입니다. 두 번째 요소는 매칭된 원본 패턴, 세 번째 요소는 메시지가 발행된 원본 채널의 이름, 네 번째 요소는 실제 메시지 페이로드(payload)입니다.

실행 예시

Redis PSUBSCRIBE 명령어 완벽 가이드 – Pub/Sub에서 여러 패턴 구독하기

참고 자료

  • PSUBSCRIBE 공식 문서 (Redis Docs)

지금까지 redis-cli와 PSUBSCRIBE 명령어를 활용해 Redis 메시지 브로커에서 하나 이상의 패턴을 구독하는 방법을 살펴보았습니다. 이 글이 도움이 되었다면 댓글로 의견을 남겨주시고, 주변에도 공유해 주세요!