Redis的发布和订阅
Redis发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。
订阅者订阅指定频道
127.0.0.1:6379> subscribe channel_1
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "channel_1"
3) (integer) 1
发布者发布消息到指定频道
127.0.0.1:6379> publish channel_1 'hello world!'
(integer) 1
订阅者接收到频道消息
1) "message"
2) "channel_1"
3) "hello world!"
通过python实现Redis的发布和订阅
- 安装redis库
pip install redis
- 发布消息代码
redis_pub.py
if __name__ == '__main__':
import redis
# 创建 redis 连接
r = redis.Redis(host="112.74.110.215", port=6379, db=0)
# 发布消息
ret = r.publish('channel_1', 'test! test! test!')
# 关闭 redis 连接
r.close()
print(ret)
- 订阅消息代码
redis_sub.py
if __name__ == '__main__':
import redis
# 创建 redis 连接
r = redis.Redis(host="112.74.110.215", port=6379, db=0)
# redis 订阅
p = r.pubsub()
p.subscribe("channel_1")
# 输出订阅到的消息,其中item['type']=='message',消息内容为item['data']
for item in p.listen():
if item['type']=='message':
print(item)
redis 连接池参考
import redis
class RedisConn(object):
""" redis 连接池"""
def __init__(self, **connection_kwargs):
if not hasattr(RedisConn, 'pool'):
RedisConn.getRedisCoon(**connection_kwargs)
self.connect = redis.Redis(connection_pool=RedisConn.pool)
@staticmethod
def getRedisCoon(**connection_kwargs):
RedisConn.pool = redis.ConnectionPool(max_connections=None, **connection_kwargs)
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。