Redis 的 SUBSCRIBE 命令能夠讓客戶端訂閱任意數量的頻道,每當有新信息發送到被訂閱的頻道時, 信息就會被髮送給全部訂閱指定頻道的客戶端。
做爲例子, 下圖展現了頻道 channel1 , 以及訂閱這個頻道的三個客戶端 —— client2 、 client5 和 client1 之間的關係:python
當有新消息經過 PUBLISH 命令發送給頻道channel1 時, 這個消息就會被髮送給訂閱它的三個客戶端:redis
2 example 實例演示
發佈端:this
# -*- coding: UTF-8 -*- import redis redis_client = redis.StrictRedis(host='localhost', port=6379, db=0) # 創建PubSub對象訂閱通道和偵聽新消息 p = redis_client.pubsub() # 訂閱兩個頻道,分別是my-first-channel,和my-second-channel p.subscribe('my-first-channel', 'my-second-channel') # 使用publish推送消息,注意是StrictRedis類的方法 redis_client.publish('my-first-channel', 'nihvdfdao')
訂閱端A:spa
# -*- coding: UTF-8 -*- import redis redis_server = redis.StrictRedis(host='localhost', port=6379, db=0) # 創建PubSub對象訂閱通道和偵聽新消息 p = redis_server.pubsub() # 訂閱兩個頻道,分別是my-first-channel,和my-second-channel p.subscribe('my-first-channel', 'my-second-channel') # 使用p.listen()方法監聽頻道 for item in p.listen(): # 若是訂閱的頻道存儲的項目是'message' if item['type'] == 'message': # 則打印這個項目 print item['data']
訂閱端B:orm
# -*- coding: UTF-8 -*- import redis redis_server = redis.StrictRedis(host='localhost', port=6379, db=0) # 創建PubSub對象訂閱通道和偵聽新消息 p = redis_server.pubsub() # 訂閱兩個頻道,分別是my-first-channel,和my-second-channel p.subscribe('my-first-channel', 'my-second-channel') whileTrue: data =msg_queue.parse_response() print pickle.loads(data[2])
redis 命令:server
訂閱:對象
SUBSCRIBE fm_105blog
發佈:圖片
PUBLISH fm_105 "this is fm_105"
本文部份內容和圖片引用如下網址:
http://zc985552943.iteye.com/blog/2037535