Redis Pub/Sub 과 명령어
개요
Redis에서 제공하는 Pub/Sub 기능에 대해 알아보자.
Redis Pub/Sub 란?
- Redis Pub/Sub는 Publisher가 메시지를 보내면, Subscriber가 메시지를 수신하는 Message System 이다.
- 메시지가 전송되는 Link 를 Channel 이라고 한다.
예시
-
Terminal - Subscriber
redis 127.0.0.1:6379> SUBSCRIBE redisChat Reading messages... (press Ctrl-C to quit) 1) "subscribe" 2) "redisChat" 3) (integer) 1redisChat을 구독하여, 메시지가 들어올 때까지 대기한다.
-
Terminal - Publisher
redis 127.0.0.1:6379> PUBLISH redisChat "Redis is a great caching technique" (integer) 1redisChat으로 메시지를 보낸다.
-
Terminal - Subscriber
message redisChat Redis is a great caching techniqueredisChat으로부터 수신받은 메시지(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의 구독자 수 |