python开发——实现Redis中的发布订阅功能
Redis中的发布/订阅模型是一种消费通信模式,下面将对这一功能进行python代码的实现。
- pubsub.py 封装发布订阅类
from redis import StrictRedis
class RedisHelper(object):
''' 封装Redis发布订阅类 '''
def __init__(self):
self.conn = StrictRedis(host='localhost', port=6379)
self.sub_chanle = 'books'
def publish(self, msg):
''' 发布消息'''
self.conn.publish(self.sub_chanle, msg)
def subscribe(self):
''' 获取消息'''
pub = self.conn.pubsub()
pub.subscribe(self.sub_chanle)
return pub
- pub.py 编写发布代码
from pubsub import RedisHelper
obj = RedisHelper()
for i in range(5):
obj.publish(f'hello_{i}')
- sub.py 编写订阅获取消息代码
from pubsub import RedisHelper
obj = RedisHelper()
sub = obj.subscribe()
while True:
msg = sub.listen()
for i in msg:
if i['type'] == 'message':
print(str(i['channel'], encoding='utf-8') + ':' + str(i['data'], encoding='utf-8'))
elif i['type'] == 'subscribe':
print(str(i['channel'], encoding='utf-8'))
- 效果展示
依次启动 sub.py pub.py 文件
参考:https://segmentfault.com/a/1190000016898228?utm_source=coffeephp.com