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

  

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/20864.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论