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("啊哈哈哈哈啊哈哈")
    

      

  • 相关阅读:
    微信小程序
    如何在微信小程序中使用骨架屏
    Nlog打印日志到Influxdb数据库
    C#通过模板导出Word的两种方法(超简单)
    VS2019制作的安装包,默认安装到C盘快捷方式无法打开
    orcale数据库还原备份
    Thread 类创建线程
    Quartz.NET
    DataTable ,使用详细。
    Unity3D 学习
  • 原文地址:https://www.cnblogs.com/bainianminguo/p/7498629.html
Copyright © 2011-2022 走看看