Redis 除了做缓存, 也可以做消息队列, 实现简单的消息的发布和订阅。Redis 消息订阅支持精确订阅和模糊订阅两种模式!

1. Redis 消息队列

1.1 Redis 消息队列特点

  • 当有新消息发布时, 所有订阅的客户端全部接受到消息。
  • Redis 订阅channel时,支持模糊匹配
  • 当新的客户端订阅时,之前的消息不会被重复接受

1.2 常用命令

操作命令 命令格式 描述
publish publish $ch $msg 发布消息, 一次只能向一个channel发布一条消息
subscribe subscribe $ch1 $ch2… 订阅频道, 可同时订阅多个频道。不支持模糊匹配
psubscribe psubscribe $chPattern1 $chPattern2… 订阅频道, 可同时订阅多组频道, 支持模糊匹配
pubpub pubsub … args … 监测pub/sub系统相关状态
punsubscribe 命令行不支持, ctrl+c 退出订阅
unsubscribe 命令行不支持, ctrl+c 退出订阅

2. 命令测试

2.1 订阅消息

打开两个客户端,同时监听两个频道ch1 和 ch2

$ redis-cli
127.0.0.1:6379> SUBSCRIBE ch1 ch2
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "ch1"
3) (integer) 1
1) "subscribe"
2) "ch2"
3) (integer) 2

2.2 模糊订阅

新起三个客户端, 实现模糊订阅频道 ch*

$ redis-cli
127.0.0.1:6379> PSUBSCRIBE ch*
Reading messages... (press Ctrl-C to quit)
1) "psubscribe"
2) "ch*"
3) (integer) 1

2.3 发布消息

分别向频道ch1 和 ch2 发送消息.

$ redis-cli
127.0.0.1:6379> PUBLISH ch1 hello
(integer) 2
127.0.0.1:6379> PUBLISH ch2 hi
(integer) 2

2.3 查看消息

当发布消息时, 会发现五个客户端均有消息输出, 但是对于精确订阅和模糊订阅两种方式, 接收到的消息体略有不同.

2.3.1 精确订阅输出

1) "message"
2) "ch1"
3) "hello"1) "message"
2) "ch2"
3) "hi"

2.3.2 模糊订阅接收消息体

1) "pmessage"
2) "ch*"
3) "ch1"
4) "hello"1) "pmessage"
2) "ch*"
3) "ch2"
4) "hi"

2.4 查看监听状态

2.4.1 查看所有精确监听的channel名称

  • 支持模糊匹配进行过滤
  • 只能查看采用精确方式订阅的channel名称, 不能查看模糊方式订阅的channel
127.0.0.1:6379> PUBSUB channels
1) "ch1"
2) "ch2"127.0.0.1:6379> PUBSUB channels ch*
1) "ch1"
2) "ch2"

2.4.2 查看精确订阅具体channel 的客户端数量

  • 不支持模糊匹配
  • 结果只包含精确订阅的客户端数量, 不包含模糊订阅的客户端数量
127.0.0.1:6379> PUBSUB numsub ch1
1) "ch1"
2) (integer) 2

2.4.3 查看模糊订阅的数量

127.0.0.1:6379> PUBSUB numpat
(integer) 3

14. Redis 发布订阅-实现消息队列相关推荐

  1. Redis的发布订阅(消息队列,比如ActiveMQ,一方得到数据后,多方得到信息)

    什么是发布订阅? 发布和订阅是进程间的一种消息通信模式:发送者(publisher)将消息发送给一个第三方,订阅者(subscriber)从第三方那里接收消息. 这个第三方我们通常称之为 消息中间件, ...

  2. RabbitMQ实例教程:发布/订阅者消息队列

    消息交换机(Exchange) RabbitMQ消息模型的核心理念是生产者永远不会直接发送任何消息给队列,一般的情况生产者甚至不知道消息应该发送到哪些队列. 相反的,生产者只能发送消息给交换机(Exc ...

  3. redisson究极爽文-手把手带你实现redisson的发布订阅,消息队列,延迟队列(死信队列),(模仿)分布式线程池

    参考资料 :分布式中间件实战:java版 (书籍), 多线程视频教程(视频)- 项目启动环境 导入依赖 <parent><groupId>org.springframework ...

  4. redis进阶之实现消息队列发布/订阅模式使用(七)

    Redis发布订阅 Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息.微信. 微博.关注系统! Redis 客户端可以订阅任意数量的频道. ...

  5. google的api key调用次数是多少_Sprint Boot如何基于Redis发布订阅实现异步消息系统的同步调用?...

    前言 在很多互联网应用系统中,请求处理异步化是提升系统性能一种常用的手段,而基于消息系统的异步处理由于具备高可靠性.高吞吐量的特点,因而在并发请求量比较高的互联网系统中被广泛应用.与此同时,这种方案也 ...

  6. kafka redis vs 发布订阅_发布订阅的消息系统 Kafka的深度解析

    背景介绍 Kafka简介 Kafka是一种分布式的,基于发布/订阅的消息系统.主要设计目标如下: 以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间的访问性能 高吞吐 ...

  7. Spring Boot 使用Redis发布订阅模式处理消息

    Spring Boot 使用Redis发布订阅模式 1. Redis发布订阅模式 2. Spring Boot中订阅消息 2.1 Redis监听器容器配置 2.2 创建通道监听器 2.3 测试订阅功能 ...

  8. redis订阅和发布 消息推送php,redis发布订阅什么用

    Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息. Redis 客户端可以订阅任意数量的频道. (推荐学习:Redis视频教程) Redis ...

  9. 使用Spring Redis发布/订阅

    继续发现功能强大的Redis功能集,值得一提的是对发布/订阅消息的开箱即用支持. 发布/订阅消息传递是许多软件体系结构的重要组成部分. 某些软件系统要求消息传递解决方案提供高性能,可伸缩性,队列持久性 ...

最新文章

  1. PyQt4编程之简短地做出多个选择框
  2. 单体模式singleton
  3. 【Linux】一步一步学Linux——w命令(97)
  4. BAT经典面试题精简版(基础知识附答案)
  5. JEECG - 基于代码生成器的J2EE智能开发框架 续五:权限设计
  6. 为什么用自己的电脑部署服务器之后外网访问不到呢?并且该如何解决这个问题呢?
  7. 网站SEO优化之Robots.txt文件写法。
  8. 软件专业大学生常用的刷题、找答案、找资源的网站
  9. canvas 画正方形和圆形
  10. plt.text函数用法
  11. Andriod中插入百度广告的使用
  12. 微信小程序--使用本地服务器进行测试开发
  13. html如何控制图片自动放缩,如何用js控制图片放大缩小
  14. Pulling is not possible because you have unmerged files.
  15. 电脑是否存在内存泄漏_如何避免内存泄露
  16. 什么是销售管理?销售管理的五大职能
  17. 误用Redis命令导致服务器挂了,领导让我写事故报告
  18. 【论文笔记】BINE:二分网络嵌入
  19. 观战指南 | 大数据足球人口报告(附图表)
  20. 超级火爆的“量化交易”到底是什么?

热门文章

  1. node.js+uni计算机毕设项目基于微信小程序的美甲预约系统(程序+小程序+LW)
  2. 社区传媒突破场景限制,“新潮传媒”们如何逐鹿市场?
  3. 创建(或者删除)数据库、表
  4. 启示录:美柚如何度过“九死一生”魔咒?
  5. php 微信公众号 数据库设计,微信公众平台开发 - 数据库操作_PHP教程
  6. Java集合类面试题
  7. Hexo博客搭建之配置文件详解(Melody)
  8. mysql数据库连接等待时间修改
  9. Android APT
  10. u盘安装linux 无法启动,U盘安装linux,无法启动问题解决方法.doc