管道:將數據操作放在內存中,只有成功后,才會一次性全部放入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']
繼承類更加方便使用