zoukankan      html  css  js  c++  java
  • redis的订阅和发布

    #订阅和发布有什么用呢?
    # 特点
    # 1、实现一个一对多的效果,只有一个发布者,多个订阅者
    # 2、实时的发布消息,广播方发布消息,所有的订阅者都会受到消息,一个人同时只能接受
    #一个频道

    1、先写一个公共的类,这个类发布方和订阅方都可以调用,我们在这个类中分别定义了发布方的方法和订阅方的方法
    import redis
    
    class RedisHelper(object):
        def __init__(self):
            self.conn = redis.Redis(host="127.0.0.1")
            #首先连上redis
            self.chan_sub = "fm100.4"
            #订阅频道
            self.chan_pub = "fm100.4"
            #发布频道
    
        def public(self,msg):
            self.conn.publish(self.chan_pub,msg)
            # 发布消息,往self.chan_pub这个频道发布消息,消息的内容是msg
            return  True
        def subscribe(self):
            pub = self.conn.pubsub()
            #生成一个实例,相当于打开收音机
    
            pub.subscribe(self.chan_sub)
            #订阅self.chan_sub这个频道的内容
    
    
            pub.parse_response()
            #准备监听发布方发布的消息,这里仅仅是准备监听,只有当真正的实例去调用这个parse_response方法,才会真正的开始监听消息
    
    
            return pub
    

     

    2、在订阅方中导入我们公共的类,然后实例化一个订阅方的对象

    from test_redis_class import RedisHelper
    
    obj = RedisHelper()
    #先实例化,连接发布方
    
    
    redis_sub = obj.subscribe()
    while True:
        msg = redis_sub.parse_response()
        #这里开始真正的听,如果发布方有消息过来,则打印消息,如果
        #广播方没有消息过来,则一直阻塞
        print(msg)
    

     

    3、在发布方中导入我们公共的类,然后实例化一个发布方的对象

    from test_redis_class import RedisHelper
    
    
    """
    方法1
    import redis
    r = redis.Redis()
    
    #发布消息下面这个命令的返回值就是有多少订阅方收到广播的消息
    r.publish("fm100.4","hahahahah")
    
    """
    
    
    # 方法2
    #发布消息
    obj = RedisHelper()
    obj.public("啊哈哈哈哈啊哈哈")
    

      

  • 相关阅读:
    现代编程语言:Rust (铁锈,一文掌握钢铁是怎样生锈的)
    mRNA(阅读链接)
    技术的极限(13): 对过程和细节的可视化
    现代编程语言:TypeScript
    现代编程语言:JavaScript
    现代编程语言:zig
    现代编程语言:Python(蛇形遍历一颗树)
    炼金术(9): 简约而不简单,永不停歇的测试 -- always_run
    软件性能测试分析与调优实践之路-Web中间件的性能分析与调优总结
    退役记
  • 原文地址:https://www.cnblogs.com/bainianminguo/p/7498629.html
Copyright © 2011-2022 走看看