Redis 发布/订阅
发布/订阅(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 发布/订阅相关推荐
- 5.Redis 发布订阅
转自:http://www.runoob.com/redis/redis-tutorial.html Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub ...
- python redis订阅_Python -- Redis 发布订阅
一.前言 Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息. Redis 客户端可以订阅任意数量的频道. 下图展示了频道 channel1 ...
- google的api key调用次数是多少_Sprint Boot如何基于Redis发布订阅实现异步消息系统的同步调用?...
前言 在很多互联网应用系统中,请求处理异步化是提升系统性能一种常用的手段,而基于消息系统的异步处理由于具备高可靠性.高吞吐量的特点,因而在并发请求量比较高的互联网系统中被广泛应用.与此同时,这种方案也 ...
- 使用Spring Redis发布/订阅
继续发现功能强大的Redis功能集,值得一提的是对发布/订阅消息的开箱即用支持. 发布/订阅消息传递是许多软件体系结构的重要组成部分. 某些软件系统要求消息传递解决方案提供高性能,可伸缩性,队列持久性 ...
- Redis发布订阅模式
使用银行卡消费的时候,银行往往会通过微信.短信或邮件通知用户这笔交易的信息,这便是一种发布订阅模式,这里的发布是交易信息的发布,订阅则是各个渠道.这在实际工作中十分常用,Redis 支持这样的一个模式 ...
- 上下文管理、redis发布订阅、RabbitMQ发布订阅、SQLAlchemy
一.上下文管理 import contextlib @contextlib.contextmanager def work_state(state_list,worker_thread):state_ ...
- Redis 发布订阅,小功能大用处,真没那么废材!
假设我们有这么一个业务场景,在网站下单支付以后,需要通知库存服务进行发货处理. 上面业务实现不难,我们只要让库存服务提供给相关的给口,下单支付之后只要调用库存服务即可. 后面如果又有新的业务,比如说积 ...
- Redis发布订阅机制
1. 什么是Redis Redis是一个开源的内存数据库,它以键值对的形式存储数据.由于数据存储在内存中,因此Redis的速度很快,但是每次重启Redis服务时,其中的数据也会丢失,因此,Redis也 ...
- Redis学习---(13)Redis 发布订阅
Redis 发布订阅 Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息. Redis 客户端可以订阅任意数量的频道. 下图展示了频道 cha ...
- Redis 发布订阅原理以及springboo中RedisTemplate集成
一.Redis发布订阅原理 Redis的架构包括两个部分:Redis Client和Redis Server,即客户端和服务端.客户端负责向服务器端发送请求并接受来自服务器端的响应.服务器端负责处理客 ...
最新文章
- Android权限申请完全解析(一):Android自带的权限申请
- SilverlightMMORPG窝窝世界明天4月28日封测
- java渡劫期(32)----java进阶(ssm整合项目实战----房屋出租系统(渡劫失败))
- DataWorks 如何设置调度依赖
- Oracle 执行计划 提示 'PLAN_TABLE' is old version 解决方法
- 【CLRS】《算法导论》读书笔记(一):堆排序(Heapsort)
- 创建和管理图书管理系统数据库
- 新型养老机构的“智安”神器 | ​钛颐康智慧养老物联网平台
- 阿里云SSL证书免费申请和部署方法((DigiCert 免费版 SSL-图文教程)
- 苹果手机更改照片大小kb_iPhone调整照片大小方法教程 无需第三方软件
- ubutu 识别android手机
- 1698无法登录mysql服务器,Mysql ERROR 1698 (28000) 解决
- [虚拟机] 如何让VMware上的虚拟机识别到U盘
- 论文研究范围从什么角度怎么写?
- 关于vim的详细配置
- java并查集_一个非常实用而且精妙的算法-并查集(java语言实现)
- 高等工程热力学复习04
- kingcms php 搜索,KingCMS内容管理系统
- 最新报告下载 | “5G+云+AI”将如何赋能千行百业?
- java set 排序的_Set集合排序