티스토리 뷰

Redis

Redis Pub/Sub

lingi04 2022. 8. 2. 22:46

회사에서 Redis Pub/Sub을 사용 검토하며 알아본 내용을 간단하게 정리

Pub/Sub 방식

  • Publisher와 Subscriber는 서로 디커플링 되어 있어 누가 메시지를 발행 하는 지, 누가 메시지를 구독 하는 지 알지 못한다. 이런 특징은 Redis Pub/Sub이 큰 규모로 확장될 수 있도록 하고, 다양한 네트워크 토폴로지를 가질 수 있게 한다.
  • Publisherchannel에 메시지를 발행 하면 그 채널을 구독 하고 있는 SubscriberRedis가 push 해주는 메시지를 전달 받게 된다. Redis는 채널을 구독 하고 있는 모든 Subscriber들에게 메시지를 push 해준다.

패턴 일치 구독

glob 스타일 패턴으로 채널을 구독 할 수 있다. 예를 들어

# 구독
PSUBSCRIBE news.*

# 구독 취소
PUNSUBSCRIBE news.*

패턴으로 구독을 한다면 단일 메시지를 여러번 받을 수 있다. 예를 들어

# 구독
SUBSCRIBE foo
PSUBSCRIBE f*

여기서 foo 채널로 메시지가 전송 되면, 클라이언트는 message형태, pmessage형태 두개의 메시지를 받게 된다.

Shared Pub/Sub

7.0 부터 샤드 Pub/Sub이 도입됐다. slot에 key를 assign 하는 알고리즘과 동일한 알고리즘으로 shared channel이 slot에 assign 된다. 클러스터는 메시지가 샤드에 속한 모든 노드에(샤드가 노드 보다 큰 개념인가? -> 알아보자) 전송하는 것을 보장한다. 그러므로 클라이언트는 마스터 / 레플리카 어디에 연결하던 shard channel을 구독할 수 있다.

Shared Pub/Sub은 클러스터 모드에서 Redis Pub/Sub을 사용을 확장할 수 있도록 해준다. 이것은 메시지를 클러스터의 샤드 안에서만 전파되도록 한다. 따라서 클러스터 버스를 통과 하는 데이터의 양은 global Pub/Sub에 비해서 제한된다.

'Redis' 카테고리의 다른 글

Spring data redis(lettuce connector) 쓰기 전에 알았다면 좋았을 것들  (0) 2024.04.20
Redis Transactions  (0) 2022.09.28
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday