본문 바로가기

Redis Official Documentation

[Redis Official Documentation] Redis Pub/Sub

1) Redis에서 Pub/Sub 채널 사용 방법

 

- SUBSCRIBE, UNSUBSCRIBE, PUBLISH는 Publish/Subscribe 메시징 패러다임을 구현하며,

  발신자(발행자)는 특정 수신자(구독자)에게 메시지를 보낼 것이라고 ㅍ로그래밍되지 않습니다. 

 

- 대신 발행된 메시지는 채널로 구분되며, 그 채널에 어떤 구독자가 있는지에 대한 

  지식 없이 발행됩니다. 

 

- 구독자는 하나 이상의 채널에 관심을 표현하고, 오직 관심 있는 메시지만을 받으며,

  그 메시지를 발행하는 발행자가 누구인지 알지 못합니다.

  이러한 발행자와 구독자의 분리는 더 큰 확장성과 동적 네트워크 토폴로지를 가능하게 합니다. 

 

- 예를 들어, "channel11"과 "ch:00" 채널을 구독하려면

  클라이언트가 SUBSCRIBE 명령어로 채널 이름을 제공하면 됩니다. 

SUBSCRIBE channel11 ch:00

 

 - 다른 클라이언트가 이러한 채널에 메시지를 보내면

   Redis는 구독한 모든 클라이언트에게 메시지를 푸시합니다.

   구독자는 메시지가 발행된 순서대로 메시지를 받습니다.

 

- 하나 이상의 채널을 구독한 클라이언트는 명령어를 발행할 수 없지만,

  다른 채널에 대해 SUBSCRIBE와 UNSUBSCRIBE 명령어를 발행할 수 있습니다.

  구독 및 구독 취소 작업에 대한 응답은 메시지 형식으로 전송되며,

  클라이언트는 메시지 스트림을 일관되게 읽을 수 있습니다. 

 

 

2) 메시지 전달 의미

- Redis의 Pub/Sub은 "최소 한 번" 메시지 전달 의미(at-most-once)를 따릅니다.

  즉, 메시지는 발행되면 한 번만 전달되며, 메시지가 발송된 후에는 

  다시 전송될 기회는 없습니다.

  만약 구독자가 메시지를 처리할 수 없는 경우 메시지는 영원히 손실됩니다.

 

- 더 강력한 전달 보장을 요구하는 애플리케이션이 필요한 경우

  Redis Streams에 대해 배우는 것이 좋습니다.

  스트림의 메시지는 지속되며, "최소 한 번" 또는 "최대 한 번" 메시지 전달 의미를

  모두 지원합니다.