Redis #.5 Publish & Subscribe

 

Publish & Subscribe

유투브 같은 사이트에서 내가 누군가의 영상을 구독했을때, 새 영상이 올라오면 유투브는 자동으로 구독자들에게 발행자의 업데이트 소식을 알려줍니다. 레디스로 이런 기능 구현이 가능합니다. 구독자에게 SUBSCRIBE 설정을 하면, 레디스는 구독자의 CLI를 블록킹하게 되고, 발행자가 값을 입력했을때, 구독자의 창에 메시지를 출력합니다. 이러한 기능을 이용하여, 다양한 알림 서비스를 만들수 있습니다.

구독자 #.1

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

구독자 #.2

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

세개의 창을 띄우고 두 개의 창에서 SUBSCRIBE 명령으로 Key를 지정합니다.

발행자

127.0.0.1:6379> PUBLISH newupdate "new blu-ray update"
(integer) 2
127.0.0.1:6379> PUBLISH newupdate "IRON MAN 3"
(integer) 2
127.0.0.1:6379> PUBLISH newupdate "EXIT"
(integer) 2
127.0.0.1:6379>

PUBLISH 명령으로 key값을 업데이트하면, 구독자의 창에서 메세지가 자동으로 출력됩니다.

127.0.0.1:6379> SUBSCRIBE newupdate
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "newupdate"
3) (integer) 1
1) "message"
2) "newupdate"
3) "new blu-ray update"
1) "message"
2) "newupdate"
3) "IRON MAN 3"
1) "message"
2) "newupdate"
3) "EXIT"

여전히 CLI는 블록킹 되어 있지만, 발행자의 메시지를 출력합니다.

구독자의 클라이언트에서 UNSUBSCRIBE 명령을 사용하면 클라이언트에서의 구독 채널이 해지됩니다. 채널을 주지않고 UNSUBSCRIBE 명령을 이용하면 모든 채널이 끊어집니다. Redis의 CLI 안에서는 Ctrl-C 명령으로 끊을수 있습니다.

 

 

 

소셜 미디어로 공유하기

You may also like...

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.