Redis的频道发布与消息订阅
Redis的频道发布与消息订阅
进程间的一种通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。
订阅/发布消息图
下图展示了频道channel1,以及订阅这个频道的三个客户端-client2、client5、client1

当有新消息通过PUBLISH命令发送给频道channel1时,这个消息就会被发送给订阅它的三个客户端。

Redis 发布订阅命令
PSUBSCRIBE pattern [pattern ...]
订阅一个或者多个符合模式匹配的频道
【假设客户端同时订阅了某种模式和符合该模式的某个频道,那么发送给这个频道的消息将被客户端接收到两次,只不过这两条消息的类型不同,一个是message类型,一个是pmessage类型,但其内容相同。 】
PUBSUB subcommand [argument [argument ...]]
返回由活跃频道组成的列表,即可以查询订阅与发布系统的状态
PUBLISH channel message
发送消息到指定的频道
【其返回值为接收到该消息的订阅者的数量】
SUBSCRIBE channel [channel ...]
订阅一个或多个频道
【其返回值包括客户端订阅的频道,目前已订阅的频道数量,以及接收到的消息,其中subscribe表示已经成功订阅了某个频道】
PUNSUBSCRIBE [pattern [pattern ...]]
退订所有符合模式匹配的频道
UNSUBSCRIBE [channel [channel ...]]
退订一个或多个频道
【Redis采用UNSUBSCRIBE和PUNSUBSCRIBE命令取消订阅,其返回值与订阅类似。
由于Redis的订阅操作是阻塞式的,因此一旦客户端订阅了某个频道或模式,就将会一直处于订阅状态直到退出。
在SUBSCRIBE,PSUBSCRIBE,UNSUBSCRIBE和PUNSUBSCRIBE命令中,
其返回值都包含了该客户端当前订阅的频道和模式的数量,当这个数量变为0时,该客户端会自动退出订阅状态。】
简单练习
客户端先订阅后,消息发布后才能接收到消息
- 可以一次性订阅多个,SUBSCRIBE c1 c2 c3
- 消息发布,PUBLISH c2 hell0-redis
- 订阅多个,通配符*,PSUBSCRIBE new*
- 收取消息,PUBLISH new1 redis2019
Redis的频道发布与消息订阅的更多相关文章
- 10 redis--频道发布与消息订阅
消息订阅 使用办法: 订阅端: Subscribe 频道名称 发布端: publish 频道名称 发布内容 客户端例子: redis 127.0.0.1:6379> subscribe news ...
- Redis for OPS 02:消息订阅和事务管理
写在前面的话 上一节谈了 Redis 的安装以及五种基本数据类型的一些简单的操作,本章节主要看看 Redis 的另外一些特征,虽然可能不常用,但是还是需要了解的.对于我们运维人员来讲,这些东西更像拓展 ...
- 【并发】9、借助redis 实现生产消费,消息订阅发布模式队列
这个就是一个消息可以被多次消费的范例了 其实这个实现的方式可以参考我之前的设计模式,观察者模式 https://www.cnblogs.com/cutter-point/p/5249780.html ...
- Redis 学习(三) —— 事务、消息发布订阅
一.Redis事务 Redis 提供的事务机制与传统的数据库事务有些不同,传统数据库事务必须维护以下特性:原子性(Atomicity), 一致性(Consistency),隔离性(Isolation) ...
- SignalR 循序渐进(五)多个Hub服务器下的消息订阅
SignalR的通讯方式决定了其高性能,但是即便如此,当消息的并发量上来以后,单节点的Hub服务器依然可能无法承载总的消息吞吐量,那么如何对Hub服务器做水平扩展呢? 从微软官方的文档上看,Signa ...
- 基于Redis的消息订阅/发布
在工业生产设计中,我们往往需要实现一个基于消息订阅的模式,用来对非定时的的消息进行监听订阅. 这种设计模式在 总线设计模式中得到体现.微软以前的WCF中实现了服务总线 ServiceBus的设计模式. ...
- Linux+Redis实战教程_day02_消息订阅与发布_多数据库_redis批量操作-事务_redis持久化
5.扩展知识-消息订阅与发布(了解) 订阅新闻,新闻发布 subscribe channel:订阅频道,例:subscribe mychat,订阅mychat这个频道 psubscribe chann ...
- Redis之Redis消息订阅发布简介
概念: Redis消息订阅发布是进程间的一种消息通信模式,发送者pub发送消息,订阅者sub接收消息. 使用须知: 需要先订阅后发布,才能接收到消息.在订阅时,相当于创建了可供发布的频道. 案例: ( ...
- 基于redis的消息订阅与发布
Redis 的 SUBSCRIBE 命令可以让客户端订阅任意数量的频道, 每当有新信息发送到被订阅的频道时, 信息就会被发送给所有订阅指定频道的客户端. 作为例子, 下图展示了频道 channel1 ...
随机推荐
- XStream详解
XStream的作用 XStream可以把JavaBean对象转换成XML! 通常服务器向客户端响应的数据都是来自数据库的一组对象,而我们不能直接把对象响应给客户端,所以我们需要把对象转换成XML再响 ...
- 【学习】SpringBoot之简介、特点、缺点、应用场景
Spring Boot 的介绍 SpringBoot的目的在于创建和启动新的基于Spring框架的项目.Spring Boot 会选择最合适的Spring子项目和第三方开源库进行整合.大部分Sprin ...
- 20175212童皓桢 《Java程序设计》第11周学习总结
20175212童皓桢 <Java程序设计>第11周学习总结 教材学习内容总结 一.URL类 1.一个URL对象通常包含最基本的三部分信息:协议.地址.资源 2.构造方法: public ...
- 利用python的图像分块与拼接
import os import matplotlib.pyplot as plt import cv2 import numpy as np def divide_img(img_path, img ...
- ubuntu下mysql数据库存储路径修改
一.安装mysql ubuntu系统安装配置APT源,apt install mysql-server mysql-client 二.查看安装端口情况 sudo netstat -tap | grep ...
- delete trancate drop三者之间的区别
简而言之: 删除效果及速度:Drop > truncate > delete 原因: delete,逐行删除,且用日志逐行记录用于回滚,会执行删除触发器: ------> ...
- CentOS 6.5 安装OSA监控精灵监控主机
OSA监控是一个开源的图形化免费好用的监控,安装之前首先要配置好PHP环境, yum install httpd mysql mysql-server php-mysql php* -y 编辑http ...
- 自动轮询的recycleView
import android.content.Context; import android.support.v7.widget.RecyclerView; import android.util.A ...
- django中的model 的unique_together(联合唯一)
unique_together解释 nique_together 这个元数据是非常重要的一个!它等同于数据库的联合约束! 举个例子,假设有一张用户表,保存有用户的姓名.出生日期.性别和籍贯等等信息.要 ...
- Professional JavaScript for Web Developers P224-P225
然后第二段代码执行过程中,有1个global variabe object,1个createFunction activation object,10个anonymous function1 acti ...