Redis Pub/Sub 란?
- 메시지 발행자(Publisher)와 구독자(Subscriber) 간의 메시지 전달을 위한 통신 방법
- Publisher는 메시지를 특정 Channel에 발행하고, Subscriber는 Channel을 구독하여 메시지를 수신
- Subscriber는 여러 Channel을 구독하여 여러 주제의 메시지를 동시에 처리할 수 있음
- In-Memory 기반이기 때문에 네트워크 통신이 필요한 웹 소켓을 이용하는 것보다 빠른 메시지 통신 가능
- 발행(publish)한 메시지는 따로 보관되지 않으며 수신 확인을 하지 않아 전송이 보장 되지 않음
Redis Pub/Sub 사용하기 좋은 상황
• 짧고 간단한 메세지를 높은 성능으로 보내고 싶을 때
• 전송 메시지를 저장하거나 수신 확인이 필요 없을 때
• 메세지의 전송 보장이 필요 없을 때
Redis Pub/Sub는 Subscriber가 없는 상태에서 메시지를 발행(publish)하면 메시지는 소멸 된다.
Redis Pub/Sub 기본 구성
Channel
- 메시지가 발행(publish)되고 구독(subscribe)되는 가상의 경로이며 단순한 문자열로 표현
Subscriber
- Channel을 구독(subscribe)하여 실시간으로 메시지를 수신
- 메시지는 Channel마다 독립적으로 처리되며, 각 Channel에 대해 동시에 여러 메시지를 수신
Publisher
- 특정 Channel에 메시지를 발행(publish)하여 구독(subscribe)하는 모든 Subscriber에게 전달
- 메시지를 발행하는 역할만 수행하며, Subscriber로부터의 응답을 받지 않음(단방향)
Redis Pub/Sub 기본 명령어
Redis Cli 환경 명령어
## 구독(subscribe)
# 특정 채널(channel) 구독(subscribe)
subscribe <channel1> <channel2> ...
# 특정 채널(channel) 구독(subscribe) 취소
unsubscribe <channel1> <channel2> ...
# 특정 패턴형 채널(channel) 구독(subscribe)
psubscribe <pattern*>
# 특정 패턴형 채널(channel) 구독(subscribe) 취속
punsubscribe <pattern*>
## 발행(publish)
# 메세지를 특정 채널(channel)에 발행(publish)
publish <channel> <message>
## 채널(channel)
# 활성화된 채널(channel) 조회
pubsub channels
# 특정 채널(channel)에 구독중 인 구독자 수 조회(패턴형 제외)
pubsub numsub <channel>
# 패턴형 채널(channel)에 구독중 인 구독자 수 조회
pubsub numpat
참고사이트
• https://inpa.tistory.com/entry/REDIS
• https://oliveyoung.tech/blog/2023-08-07/async-process-of-coupon-issuance-using-redis/