Redis Pub/Sub 과 명령어

Redis Pub/Sub 과 명령어

개요

Redis에서 제공하는 Pub/Sub 기능에 대해 알아보자.


Redis Pub/Sub 란?

  • Redis Pub/Sub는 Publisher가 메시지를 보내면, Subscriber가 메시지를 수신하는 Message System 이다.
  • 메시지가 전송되는 Link 를 Channel 이라고 한다.


예시

  1. Terminal - Subscriber

     redis 127.0.0.1:6379> SUBSCRIBE redisChat
     Reading messages... (press Ctrl-C to quit)
     1) "subscribe"
     2) "redisChat"
     3) (integer) 1
    
    • redisChat 을 구독하여, 메시지가 들어올 때까지 대기한다.
  2. Terminal - Publisher

     redis 127.0.0.1:6379> PUBLISH redisChat "Redis is a great caching technique"
     (integer) 1
    
    • redisChat 으로 메시지를 보낸다.
  3. Terminal - Subscriber

     message
     redisChat
     Redis is a great caching technique
    
    • redisChat 으로부터 수신받은 메시지(Redis is a great caching technique)를 출력한다.

ctrl + c 로 수신 상태를 종료할 수 있다.


주요 명령어 Reference

NO. 명령어 설명 시간복잡도
1 PSUBSCRIBE pattern1 [pattern2 …] 해당 패턴들을 구독한다. O(N)
N: 클라이언트가 이미 구독한 channel의 개수
2 PUBSUB CHANNELS [pattern] 현재 활성화된 channel 들을 반환한다. O(N)
N: 활성화된 channel의 개수
3 PUBSUB NUMPAT 클라이언트가 현재 구독하는 패턴의 개수를 반환한다. O(1)
4 PUBSUB NUMSUB [channel1 [channel2 …]] 해당 channel의 구독자 수를 반환한다. 단, 패턴을 통해 구독하는 클라이언트는 제외한다. O(N)
N: 조회할 channel의 개수
5 PUBLISH channel message 해당 channel 에 message 를 보낸다. O(N+M)
N: 메시지가 전송될 채널의 구독자 수, M: 시스템 전체 패턴 구독자 수
6 PUNSUBSCRIBE [pattern1 [pattern2 …]] 해당 channel들을 구독 취소한다. O(N+M)
N: 구독 취소할 채널의 구독자 수, M: 시스템 전체 패턴 구독자 수
7 SUBSCRIBE channel1 [channel2 …] 해당 채널들을 구독한다. O(N)
N: 구독할 channel의 개수
8 UNSUBSCRIBE channel1 [channel2 …] 해당 채널들을 구독 취소한다. O(N)
N: 구독 취소할 channel의 구독자 수