python中sub-pub机制怎么实现Redis的订阅与发布

ID:988 / 打印

有志者,事竟成!如果你在学习数据库,那么本文《python中sub-pub机制怎么实现Redis的订阅与发布》,就很适合你!文章讲解的知识点主要包括,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~

先介绍一下redis的pub/sub功能:

The Pub/Sub feature, which stands for Publish and Subscribe, provides a mechanism for publishing and subscribing.。基于事件的系统中,Pub/Sub是目前广泛使用的通信模型,它采用事件作为基本的通信机制,提供大规模系统所要求的松散耦合的交互模式:订阅者(如客户端)以事件订阅的方式表达出它有兴趣接收的一个事件或一类事件;发布者(如服务器)可将订阅者感兴趣的事件随时通知相关订阅者。

通俗来讲,就是说我sub端(订阅者)一直监听着,一旦pub端(发布者)发布了消息,那么我就接收过来,举个例子,先是发布者:

#coding:utf-8 import time import redis   number_list = ['300033', '300032', '300031', '300030'] signal = ['1', '-1', '1', '-1']   rc = redis.StrictRedis(host='***', port='6379', db=3, password='********') for i in range(len(number_list)):     value_new = str(number_list[i]) + ' ' + str(signal[i])     rc.publish("liao", value_new)  #发布消息到liao

接着我们来看看订阅者:

#coding:utf-8 import time import redis   rc = redis.StrictRedis(host='****', port='6379', db=3, password='******') ps = rc.pubsub() ps.subscribe('liao')  #从liao订阅消息 for item in ps.listen():        #监听状态:有消息发布了就拿过来     if item['type'] == 'message':         print item['channel']         print item['data']

关于数据结构,也就是item,是类似于:{'pattern': None, 'type': 'message', 'channel': 'liao', 'data': '300033 1'}这样的,所以可以通过channel来判断这个消息是属于哪一个队列里的。(运行程序的时候,先运行订阅者,在运行发布者程序)

总结,要点有两个:

  • 一是连接方式。使用python连接redis有三种方式:①使用库中的Redis类(或StrictRedis类,其实差不多);②使用ConnectionPool连接池(可保持长连接);③使用Sentinel类(如果有多个redis做集群时,程序会自己选择一个合适的连接)。

  • 二是订阅方法。这里使用的是StrictRedis类中的pubsub方法。一旦连接成功,就可以使用subscribe或psubscribe方法来订阅Redis消息。其中subscribe是订阅一个频道,psubscribe可订阅多个频道(这样写的时候,作为参数的频道应该是一个列表)。之后就可以开始监听了。

理论要掌握,实操不能落!以上关于《python中sub-pub机制怎么实现Redis的订阅与发布》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注the24.cn吧!

上一篇: spring boot如何整合redis主从sentinel方式
下一篇: SpringBoot整合Redis实现序列化存储Java对象的操作方法

作者:admin @ 24资源网   2024-09-02

本站所有软件、源码、文章均有网友提供,如有侵权联系308410122@qq.com

与本文相关文章

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。