python---redis管道(事務)和發布訂閱


管道:將數據操作放在內存中,只有成功后,才會一次性全部放入redis

#管道(事務),要是都成功則成功,失敗一個全部失敗
#原理:將數據操作放在內存中,只有成功后,才會一次性全部放入redis
pipe = r.pipeline(transaction=True)

pipe.set('name','sad')
pipe.set('age',20)

pipe.execute()

發布訂閱:(回顧:查看rabbitMQ訂閱者模式,這個功能更加強大)

基礎類:將訂閱和發送集合到一個類中了

import redis

#將訂閱和發送集合到一個類中了
class RedisHelper:
    def __init__(self):
        self.__conn = redis.Redis(host="localhost",port=6379)#默認端口也是6379
        self.chan_sub = "fm104.5"#接收的波段
        self.chan_pub = "fm104.5"#發送的波段

    #發布消息
    def public(self,msg):
        self.__conn.publish(self.chan_pub,msg)
        return True

    #訂閱消息
    def subscribe(self):
        pub = self.__conn.pubsub()
        pub.subscribe(self.chan_sub)
        pub.parse_response()
        return pub

發布者:

一:不使用基礎類直接發布

import redis


r = redis.Redis(host="127.0.0.1")
r.publish("fm104.5","dasfa")

二:使用基礎類發布

from base import RedisHelper


obj = RedisHelper()
obj.public("hello")

訂閱者:

一:不使用基礎類:

import redis


r = redis.Redis(host="127.0.0.1")
pub = redis.pubsub()      #定義訂閱者
pub.subscribe(fm104.5)#定義其接受頻段 
msg
= pub.parse_response() #開始接受
print(msg)

二:使用基礎類:

obj = RedisHelper()
redis_sub = obj.subscribe()

while True:
    msg = redis_sub.parse_response()
    print(msg)   #[b'message', b'fm104.5', b'hello']

繼承類更加方便使用


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM