Redis는 다양한 데이터 타입을 지원하면서, publish/subscribe(pub/sub) 모델까지 지원합니다. pub/sub는 메시지 큐와는 특성이 조금 다른데, pub/sub 모델에서는 채널을 subscribe한 모든 subscriber에게 메시지를 전달하기 때문에, 별도로 메시지를 보관하지 않는다는 것입니다. 아래는 Redis를 통해 pub/sub 모델을 사용하기 위한 커맨드들입니다.

  • subscribe [channel ...] : 전달된 channel들을 subscribe합니다.
  • unsubscribe [channel ...] : 전달된 channel들을 unsubscribe합니다. 아무 채널도 전달되지 않으면, subscribe되어 있던 모든 채널을 unsubscribe합니다.
  • publish [channel] [message] : 전달된 channel에 message를 publish합니다.
  • psubscribe [pattern ...] : 지정된 pattern들과 일치하는 채널들을 subscribe합니다.
  • punsubscribe [pattern ...] : 지정된 pattern들과 일치하는 채널들을 unsubscribe합니다. unsubscribe 명령처럼, 아무 채널도 전달되지 않으면 모든 채널을 unsubscribe합니다.

subscribe [channel ...]

전달된 channel들을 subscribe합니다. subscribe하고 나면, 해당 채널로 브로드캐스팅되는 메시지들을 읽기 위해 Ctrl-C로 인터럽트되기 전까지 무한히 blocking됨과 동시에 메시지 하나가 들어옵니다.

127.0.0.1:6379> subscribe test
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "test"
3) (integer) 1

메시지는 위처럼 3개의 요소들로 구성됩니다.

  1. 메시지 타입 : subscribe, message, unsubscribe로 나뉘며, 각각 채널을 성공적으로 subscribe한 경우, 채널로 일반 메시지가 publish된 경우, 채널을 성공적으로 unsubscribe한 경우에 해당됩니다.
  2. 채널 이름 : 메시지가 브로드캐스팅된 채널 이름입니다. 특히 여러 개의 채널을 subscribe한 경우에, 수신된 메시지의 채널을 분별하기 위해 사용합니다.
  3. 메시지 : 전송된 메시지입니다.

publish [channel] [message]

전달된 channel에 message를 publish합니다.

127.0.0.1:6379> publish test adsf
(integer) 1
127.0.0.1:6379> publish test hello
(integer) 1

성공적으로 publish되면, 1이 반환됩니다. 아래는 위처럼 메시지를 publish한 후, subscriber 측에 수신된 메시지 정보입니다.

1) "message"
2) "test"
3) "Hello"
1) "message"
2) "test"
3) "adsf"

'데이터베이스 > Redis' 카테고리의 다른 글

[Redis] String(기본 조작)  (0) 2018.09.06
[Redis] List의 고급 커맨드들  (0) 2018.09.06
[Redis] List  (0) 2018.09.06
[Redis] select  (0) 2018.09.06
[Redis] Set  (0) 2018.09.06

+ Recent posts