redis学习-p03-发布和订阅

  1. Redis的发布和订阅
  2. 通过python实现Redis的发布和订阅

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)

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。
My Show My Code