由于redis消息队列并不支持多播机制,即生产者产出一次,由中间件复制发送给多个消费者的机制,为了弥补这个不足,单独引入了发布订阅模式的模块。使用方式如下:

#生产者

import redis

client = redis.StrictRedis()

client.publish('ll','pythonbooks come')
client.publish('ll','javabooks come')
client.publish('ll','gobooks come')
#消费者

import redis

client = redis.StrictRedis()
p = client.pubsub()
p.subscribe('ll') for msg in p.listen():
print(msg)

使用时注意:

  • 必须要先启动消费者,才能启动生产者。
  • 消费者执行过程是阻塞的,会一直等待生产者的信息
  • 可以一次订阅多个key,可以用*符号作为通配符

pubsub模式的缺点:

  • 断开连接的消费者重新连接时收不到断开时间内的消息。
  • 如果redis重新启动,pubsub消息无法持久化,相当于丢弃了所有消息。

    而解决这个缺点就需要使用一种新的数据结构stream。

具体请转:

redis-stream详解:http://www.redis.cn/topics/streams-intro.html

最新文章

  1. SLES 10安装Oracle10gR2笔记
  2. thinkphp修改及编写标签库,编辑器的使用
  3. navicat----------局域网数据库:如何让navicat链接局域网其他的数据库。
  4. IP Failover Setup using Keepalived on CentOS/Redhat 6
  5. java系列: 对不起,JavaFX——Java 8目前还不能救你(zz)
  6. BZOJ 2435 道路修建 NOI2011 树形DP
  7. css里设置一个div在顶部固定,不随滚动条滚动而滚动
  8. POJ 2135 Farm Tour [最小费用最大流]
  9. 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。
  10. Convert Windows 32bit dirver to Windows 64bit
  11. TCP的状态
  12. node.js 基础知识之 querystring.stringify querystring.escape
  13. jQuery的一些基本的函数和用jQuery做一些动画操作
  14. 008_tcp探测
  15. Blender学习笔记
  16. v4l2框架
  17. struts2 升级至2.3.32时访问页面报错 File "/struts-tags" not found
  18. 获取进程ID,父进程ID,进程完整路径
  19. Subversion客户端接受服务器证书出现“The certificate hostname does not match”的问题
  20. ButterKnife RadioGroup选择事件

热门文章

  1. vue之.native修饰符
  2. 纯CSS3实现图片展示特效
  3. java编程规约一
  4. Linux文本编辑命令
  5. <day001>存储到Mysql、mongoDB数据库+简单的Ajax请求+os模块+进程池+MD5
  6. 侧滑关闭Activity的解决方案——SwipeBackLayout
  7. java_迭代器
  8. 如何快速合并多个TXT文本内容
  9. jdk11.0.2安装
  10. SG函数模板(洛谷2197nim游戏