redis_py發佈/訂閱方法


1      Publish / Subscribe 發佈/ 訂閱

  Redis 的 SUBSCRIBE 命令能夠讓客戶端訂閱任意數量的頻道,每當有新信息發送到被訂閱的頻道時, 信息就會被髮送給全部訂閱指定頻道的客戶端。
做爲例子, 下圖展現了頻道 channel1 , 以及訂閱這個頻道的三個客戶端 —— client2 、 client5 和 client1 之間的關係:python


  wKiom1YA_fXBxAfTAACOStBsWVA333.jpg                            當有新消息經過 PUBLISH 命令發送給頻道channel1 時, 這個消息就會被髮送給訂閱它的三個客戶端:redis


wKioL1YBAFDxQWn8AADryhaLEVg140.jpg 上面描述了訂閱與發佈的關係。ide

 

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')


 

訂閱端Aspa

# -*- 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']


 

訂閱端Borm

# -*- 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

相關文章
相關標籤/搜索