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

Redis Pub/Sub 완벽 가이드 – 메시지 브로커 시스템으로 활용하기 (Redis 튜토리얼)

이 튜토리얼에서는 Redis 데이터스토어를 발행/구독(Publish/Subscribe) 메시징 시스템으로 활용하는 방법을 알아봅니다.

Redis Pub/Sub 시스템이란?

Redis는 발행/구독(Publish/Subscribe) 메시징 패러다임을 구현하고 있습니다. 이 패러다임에서는 메시지를 보내는 쪽인 발행자(Publisher)가 특정 수신자인 구독자(Subscriber)에게 직접 메시지를 전송하도록 프로그래밍되지 않습니다. 대신 발행자는 어떤 구독자가 메시지를 받을지, 아니면 아무도 받지 않을지조차 알지 못한 채 특정 채널에 메시지를 발행(publish)합니다.

반대로 메시지를 받고 싶은 구독자는 하나 이상의 채널을 구독(subscribe)함으로써 자신의 관심을 표현하며, 누가 메시지를 보냈는지 알지 못한 채 해당 채널에 발행된 메시지만 수신하게 됩니다.

Redis 용어로 정리하면 다음과 같습니다.

  • 발행자(Publisher): 메시지를 채널에 발행하는 주체
  • 구독자(Subscriber): 하나 이상의 채널을 구독하여 메시지를 소비하는 주체

메시지에는 어떤 종류의 정보든 담을 수 있습니다. 단순한 텍스트 메시지일 수도 있고, 작업 처리에 필요한 정보일 수도 있습니다. 구독자는 원하는 만큼 여러 채널을 동시에 구독할 수 있으며, 발행자 역시 어떤 채널에든 자유롭게 메시지를 발행할 수 있습니다.

이처럼 발행자와 구독자가 서로 결합되지 않은 구조(decoupling)를 가지기 때문에 시스템의 확장성유연성이 크게 향상됩니다.

Pub/Sub과 키-값 데이터베이스의 관계

Redis Pub/Sub은 Redis의 키-값(Key-Value) 데이터베이스와는 아무런 관련이 없습니다. 데이터베이스 번호를 포함해 어떤 수준에서도 서로 간섭하지 않습니다. 예를 들어, 발행자가 db 인덱스 10에서 메시지를 발행하더라도 db 인덱스 1에 접속한 구독자도 해당 메시지를 정상적으로 받을 수 있습니다.

Redis Pub/Sub 주요 명령어

Redis Pub/Sub과 관련된 핵심 명령어는 다음과 같습니다.

번호 명령어 설명
1 PSUBSCRIBE 지정된 패턴과 일치하는 하나 이상의 채널 구독
2 PUBSUB Pub/Sub 시스템의 현재 상태 조회
3 PUBLISH 특정 채널에 메시지 발행
4 PUNSUBSCRIBE 지정된 패턴과 일치하는 하나 이상의 채널 구독 해제
5 SUBSCRIBE 하나 이상의 채널 구독
6 UNSUBSCRIBE 하나 이상의 채널 구독 해제

실습 예제

이번 예제에서는 redis-cli 인스턴스 세 개를 사용해 Redis Pub/Sub 시스템을 직접 시연해 보겠습니다. 첫 번째 클라이언트는 C1C2 두 개의 채널을 구독하고, 나머지 두 클라이언트는 각각 C1 채널과 C2 채널에 메시지를 발행합니다.

1. 첫 번째 클라이언트 – C1, C2 채널 구독

첫 번째 클라이언트가 C1C2 채널을 구독합니다.

Redis Pub/Sub 완벽 가이드 – 메시지 브로커 시스템으로 활용하기 (Redis 튜토리얼)

2. 두 번째 클라이언트 – C1 채널에 메시지 발행

두 번째 클라이언트가 C1 채널에 Hello 메시지를 발행합니다.

Redis Pub/Sub 완벽 가이드 – 메시지 브로커 시스템으로 활용하기 (Redis 튜토리얼)

3. 세 번째 클라이언트 – C2 채널에 메시지 발행

세 번째 클라이언트가 C2 채널에 World 메시지를 발행합니다.

Redis Pub/Sub 완벽 가이드 – 메시지 브로커 시스템으로 활용하기 (Redis 튜토리얼)

4. 결과 확인 – 구독자가 메시지 수신

첫 번째 클라이언트 화면에 C1C2 채널에서 전달받은 메시지가 순서대로 표시됩니다.

Redis Pub/Sub 완벽 가이드 – 메시지 브로커 시스템으로 활용하기 (Redis 튜토리얼)

참고 자료

  1. Redis 공식 문서 – Pub/Sub 명령어

이 글이 도움이 되었다면 댓글로 의견을 남겨주시고, 주변에도 널리 공유해 주세요!

다음 강의 → Jedis 라이브러리를 활용한 Redis Pub/Sub 예제