发布/订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。

pub即publish,出版、发布;publisher,发布者。

sub即subscribe,订阅;subscriber,订阅者。

订阅者订阅某个channel(频道),发布者将消息发布到某个频道,redis服务器将消息推送给这个频道的所有订阅者。

channel  管道、通道、频道。

发布者、订阅者都是redis的客户端,每个redis客户端都可以是发布者,往某个频道中发布消息。

Redis的消息是在线即时消息,类似于广播,只有在线的订阅者(连接到Redis服务器的客户端),才会收到消息。

若当时不在线,并不会收到消息。后面登陆了(连接到服务器),服务器也不会推送之前(这个客户端未收到)的消息。服务器只推送一遍。


使用示例

1、启动一个redis客户端,连接到服务器,订阅频道

 subscribe channel1     #订阅channel1

一个条目用3项表示:

(1)"subscribe"   这个条目是一个订阅的频道

(2)频道名

(3)这个频道是当前客户端订阅的第几个频道

订阅之后,当前标签页会一直阻塞,等待接收Redis服务器推送的消息。

2、另起一个标签页,再运行一个redis客户端,连接redis服务器,推送消息

publish channel1 "hello"   #向channel1里推送一条消息,消息内容是hello

返回接收到此消息的订阅者数量。

每个客户端都可以往某个频道中发送消息,这些消息由redis服务器推送给所有在线的、订阅了此频道的客户端。

3、切换到另一个标签页,看到订阅channel1的客户端已经接受到消息:

(1)“message”   表示这是一条消息

(2)这条消息来自哪个频道

(3)消息内容

此客户端订阅了哪些频道,这些信息保存在redis服务器上,关闭与redis服务器的连接,redis服务器会删除该连接(该客户端的信息),订阅了哪些频道,这些信息就没了。

即订阅只在本次连接期间有效。


发布/订阅的相关命令

subscribe  channel1  channel2   #订阅一个或多个频道

psubscribe CCTV1  #p即pattern,用正则表达式指定要订阅的频道,会订阅所有匹配的频道psubscribe CCTV*  #订阅所有以CCTV开头的频道psubscribe *TV  #订阅所有以TV结尾的频道psubscribe CCTV* CNTV*  #可以指定多个匹配模式,订阅以CCTV开头的所有频道、订阅所有以CNTV开头的所有频道
unsubscribe  channel1  channel2   #退订一个或多个频道

punsubscribe CCTV* CNTV*  #退订以CCTV开头的所有频道、退订以CNTV开头的所有频道

publish  channel1  "hello"  #往某个频道里推送消息

Redis 发布/订阅相关推荐

  1. 5.Redis 发布订阅

    转自:http://www.runoob.com/redis/redis-tutorial.html Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub ...

  2. python redis订阅_Python -- Redis 发布订阅

    一.前言 Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息. Redis 客户端可以订阅任意数量的频道. 下图展示了频道 channel1 ...

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

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

  4. 使用Spring Redis发布/订阅

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

  5. Redis发布订阅模式

    使用银行卡消费的时候,银行往往会通过微信.短信或邮件通知用户这笔交易的信息,这便是一种发布订阅模式,这里的发布是交易信息的发布,订阅则是各个渠道.这在实际工作中十分常用,Redis 支持这样的一个模式 ...

  6. 上下文管理、redis发布订阅、RabbitMQ发布订阅、SQLAlchemy

    一.上下文管理 import contextlib @contextlib.contextmanager def work_state(state_list,worker_thread):state_ ...

  7. Redis 发布订阅,小功能大用处,真没那么废材!

    假设我们有这么一个业务场景,在网站下单支付以后,需要通知库存服务进行发货处理. 上面业务实现不难,我们只要让库存服务提供给相关的给口,下单支付之后只要调用库存服务即可. 后面如果又有新的业务,比如说积 ...

  8. Redis发布订阅机制

    1. 什么是Redis Redis是一个开源的内存数据库,它以键值对的形式存储数据.由于数据存储在内存中,因此Redis的速度很快,但是每次重启Redis服务时,其中的数据也会丢失,因此,Redis也 ...

  9. Redis学习---(13)Redis 发布订阅

    Redis 发布订阅 Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息. Redis 客户端可以订阅任意数量的频道. 下图展示了频道 cha ...

  10. Redis 发布订阅原理以及springboo中RedisTemplate集成

    一.Redis发布订阅原理 Redis的架构包括两个部分:Redis Client和Redis Server,即客户端和服务端.客户端负责向服务器端发送请求并接受来自服务器端的响应.服务器端负责处理客 ...

最新文章

  1. Android权限申请完全解析(一):Android自带的权限申请
  2. SilverlightMMORPG窝窝世界明天4月28日封测
  3. java渡劫期(32)----java进阶(ssm整合项目实战----房屋出租系统(渡劫失败))
  4. DataWorks 如何设置调度依赖
  5. Oracle 执行计划 提示 'PLAN_TABLE' is old version 解决方法
  6. 【CLRS】《算法导论》读书笔记(一):堆排序(Heapsort)
  7. 创建和管理图书管理系统数据库
  8. 新型养老机构的“智安”神器 | ​钛颐康智慧养老物联网平台
  9. 阿里云SSL证书免费申请和部署方法((DigiCert 免费版 SSL-图文教程)
  10. 苹果手机更改照片大小kb_iPhone调整照片大小方法教程 无需第三方软件
  11. ubutu 识别android手机
  12. 1698无法登录mysql服务器,Mysql ERROR 1698 (28000) 解决
  13. [虚拟机] 如何让VMware上的虚拟机识别到U盘
  14. 论文研究范围从什么角度怎么写?
  15. 关于vim的详细配置
  16. java并查集_一个非常实用而且精妙的算法-并查集(java语言实现)
  17. 高等工程热力学复习04
  18. kingcms php 搜索,KingCMS内容管理系统
  19. 最新报告下载 | “5G+云+AI”将如何赋能千行百业?
  20. java set 排序的_Set集合排序

热门文章

  1. java综合练习之ATM取款机
  2. AI绘图体验:想象力无限,创作无穷!(文生图)
  3. java计算机毕业设计海城同泽中学图书仓库管理系统源码+mysql数据库+系统+lw文档+部署
  4. 如何下载迅雷(狗狗)屏蔽的资源?
  5. 优思学院|《精益思想》读后感
  6. RxJava3.0 操作符之转换操作符使用
  7. 软件工程师和软件用户的搞笑对话
  8. 自媒体人必看 做视频必备的工具(附教程)
  9. [BZOJ2208]:[Jsoi2010]连通数(暴力 or bitset or 塔尖?)
  10. 致那些我工作过的设备