python 实现redis订阅发布功能
生活随笔
收集整理的這篇文章主要介紹了
python 实现redis订阅发布功能
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
redis是一個(gè)key-value存儲(chǔ)系統(tǒng)。和Memcached類似,它支持存儲(chǔ)的value類型相對(duì)更多,包括string(字符串)、list(鏈表)、set(集合)、zset(sorted set --有序集合)和hash(哈希類型)。也能實(shí)現(xiàn)訂閱發(fā)布系統(tǒng),我們來(lái)看看怎樣用redis和python結(jié)合起來(lái)進(jìn)行訂閱發(fā)布的,
import redis class RedisSubscri():def __init__(self,host):self.coon=redis.Redis(host="127.0.0.1")def publish(self,message,channel):#發(fā)布self.coon.publish(channel,message)def subscribe(self,channel):#訂閱pub=self.coon.pubsub()pub.subscribe(channel)pub.parse_response()return pubdef unsubsceribe(self,channel):#取消訂閱self.coon.pubsub().unsubscribe(channel)核心的代碼就是上面的 簡(jiǎn)單封裝后就可以使用。
發(fā)布端
redisd=RedisSubscri(host='127.0.0.1') while True: n=input("請(qǐng)輸入你要發(fā)布的頻道:") m=input("請(qǐng)輸入你要發(fā)布的消息:") redisd.publish(m,n)訂閱端
''' 遇到問(wèn)題沒(méi)人解答?小編創(chuàng)建了一個(gè)Python學(xué)習(xí)交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群里還有不錯(cuò)的視頻學(xué)習(xí)教程和PDF電子書(shū)! ''' from dingyue import RedisSubscri if __name__=="__main__":resad = RedisSubscri(host='127.0.0.1')meaaag = resad.subscribe('1')while True:print('監(jiān)聽(tīng)開(kāi)始')meaaage=meaaag.parse_response()print(meaaage[2].decode('utf-8'))if meaaage[2].decode('utf-8')=='1':m=meaaag.unsubscribe('fm9.01')print(m)print('取消訂閱成功')break那么我們來(lái)運(yùn)行下,上述的代碼,看是否能夠?qū)崿F(xiàn)登錄訂閱功能,并且實(shí)現(xiàn)退訂功能。
發(fā)布端:
訂閱端
我們?cè)谏厦娴拇a中定義了,當(dāng)接受消息為1的時(shí)候,我們就取消訂閱,
取消訂閱后就無(wú)法訂閱系統(tǒng)的消息了,所以輸出來(lái)是None。
這樣就利用python 和redis實(shí)現(xiàn)了訂閱發(fā)布的功能,其實(shí)在很多地方都可以用到redis的,深入研究在后續(xù)的文章中會(huì)介紹。
與50位技術(shù)專家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的python 实现redis订阅发布功能的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python list的一个面试题
- 下一篇: python装饰器实现对异常代码出现进行