python开发中使用redis的发布订阅功能

我们知道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)

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值