開心一笑
一男士中了獎,得到一個玩具?;氐郊依?,他把三個孩子都叫到跟前,
說:“誰最聽媽媽的話,從不和她頂嘴,媽媽讓他做什么,他就乖乖地去做什么,
誰就能得到這個玩具。”三個孩子異口同聲地說:“爸爸能得到?!?/p>
提出問題
Redis如何用命令實(shí)現(xiàn)訂閱發(fā)布???
解決問題
Redis 發(fā)布訂閱(pub/sub)是一種消息通信模式:發(fā)送者(pub)發(fā)送消息,訂閱者(sub)接收消息。
命令:
SUBSCRIBE channel [channel ...]
訂閱給定的一個或多個頻道的信息。
PUBLISH channel message
將信息發(fā)送到指定的頻道。
這里寫圖片描述
接下來就用命令實(shí)現(xiàn)上圖:
例一:
打開redis-cli 客戶端(client1),查看當(dāng)前所有key,只有一個ay_test
訂閱key為ay_test的這個channel,如下:
這里寫圖片描述
打開另一個redis-cli(client2) 客戶端同樣訂閱key為ay_test的這個channel,如下:
這里寫圖片描述
再打開另一個redis-cli 客戶端(client3),發(fā)布信息,如下:
這里寫圖片描述
client1和client2收到的信息如下:
這里寫圖片描述
例二:按照規(guī)則訂閱 可以使用PSUBSCRIBE命令訂閱指定的規(guī)則
如下:
客戶端client1訂閱ay_test*這個channel:
127.0.0.1:6379> psubscribe ay_test*
Reading messages... (press Ctrl-C to quit)
1) "psubscribe"
2) "ay_test*"
3) (integer) 1
1) "pmessage"
2) "ay_test*"
3) "ay_test1"
4) "i am ay_test1"
1) "pmessage"
2) "ay_test*"
3) "ay_test10"
4) "i am ay_test1"
客戶端client2發(fā)布信息:
127.0.0.1:6379> publish ay_test1 "i am ay_test1"
(integer) 1
127.0.0.1:6379> publish ay_test10 "i am ay_test1"
(integer) 1
127.0.0.1:6379>
只要是符合ay_test*這種格式,client1都可以收到。
讀書感悟
來自《陽光小美女》
- 做你最想做的,其他都是扯蛋?!
- 真正的失敗者不是那些沒有贏的人,而是那些害怕失敗而不敢嘗試的人。
- 那些痛苦的日子才是生命中最好的日子,因?yàn)槟切┤兆铀茉炝怂?/li>
- 總結(jié):電影講述的是 :
一個提前更年期的母親,一個談成功學(xué)的失敗者,一個失意的同性戀,一個想成為飛行員的色盲,一個很色的老爺爺,一個陽光小美女……這是個玩笑