管道:将数据操作放在内存中,只有成功后,才会一次性全部放入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']
继承类更加方便使用