我们知道redis不仅可以用来存储数据,还可以用来作为消息中间件来进行进程间的通讯,最近项目中也有用到,这里整理一下,作为记录。
首先,安装redis的python依赖。
pip install redis
然后是创建连接
import redis
rc = redis.Redis(host="127.0.0.1", port=6379, decode_responses=True)
消息发布,这个比较简单,就是传入主题和信息
rc.publish("channel", "hahahaha")
消息订阅
首先是获取一个订阅对象,然后是订阅某个主题,然后等待订阅消息。
ps = rc.pubsub()
ps.subscribe("111")
# 阻塞监听,消息的到来,可以进入到listen函数卡一下它的实现
for item in ps.listen():
print(item)
# 非阻塞订阅,循环调用get_message()方法
while True:
item = ps.get_message()
if item:
print(item)
time.sleep(0.1)
还有一种是线程非阻塞的订阅,感觉这种订阅方式比较实用,当订阅频道有消息到来时会执行我们在订阅时绑定的方法,代码如下。
import redis
import time
def handle(info):
print(info)
rc = redis.Redis(host="127.0.0.1", port=6379, decode_responses=True)
ps = rc.pubsub()
ps.subscribe(**{"123": handle})
ps.subscribe(**{"234": handle})
ps.run_in_thread(0.03)