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 명령으로 끊을수 있습니다.
최신 댓글