前言

简单介绍一下redis的发布与订阅。

正文

Redis提供了基于“发布/订阅”模式的消息机制,此种模式下,消息发布 者和订阅者不进行直接通信,发布者客户端向指定的频道(channel)发布消 息,订阅该频道的每个客户端都可以收到该消息.

命令

Redis主要提供了发布消息、订阅频道、取消订阅以及按照模式订阅和 取消订阅等命令。

  1. 发布消息

publish channel:sports "Tim won the championship"

返回的是订阅者的个数。

  1. 订阅消息

subscribe channel [channel ...]

来试一下:

订阅者可以订阅一个或多个频道,下面操作为当前客户端订阅了 channel:sports频道:

有关订阅命令有两点需要注意: ·客户端在执行订阅命令之后进入了订阅状态,只能接收subscribe、 psubscribe、unsubscribe、punsubscribe的四个命令。

·新开启的订阅客户端,无法收到该频道之前的消息,因为Redis不会对 发布的消息进行持久化。

然后发布一条消息:

然后进行订阅。

开发提示:

和很多专业的消息队列系统(例如Kafka、RocketMQ)相比,Redis的发 布订阅略显粗糙,例如无法实现消息堆积和回溯。但胜在足够简单,如果当 前场景可以容忍的这些缺点,也不失为一个不错的选择。

取消订阅:unsubscribe [channel [channel ...]]

按照模式订阅和取消订阅:

除了subcribe和unsubscribe命令,Redis命令还支持glob风格的订阅命令 psubscribe和取消订阅命令punsubscribe,例如下面操作订阅以it开头的所有 频道:

例如:

psubscribe it*

查询订阅:

pubsub channels [pattern]

所谓活跃的频道是指当前频道至少有一个订阅者

查看频道订阅数:

pubsub numsub [channel ...]

查看模式订阅数:

pubsub numpat

聊天室、公告牌、服务之间利用消息解耦都可以使用发布订阅模式,下 面以简单的服务解耦进行说明。图中有两套业务,上面为视 频管理系统,负责管理视频信息;下面为视频服务面向客户,用户可以通过 各种客户端(手机、浏览器、接口)获取到视频信息。

假如视频管理员在视频管理系统中对视频信息进行了变更,希望及时通 知给视频服务端,就可以采用发布订阅的模式,发布视频信息变化的消息到 指定频道,视频服务订阅这个频道及时更新视频信息,通过这种方式可以有 效解决两个业务的耦合性。

如果小型不是特别需要可靠(精确度)的功能可以使用该redis的发布与订阅。

redis 简单整理——发布与订阅[十四]的更多相关文章

  1. Redis中的发布与订阅

    redis中实现发布与订阅相对于zookeeper非常简单.直接使用publish和subscribe就行. subscrible news; 订阅news这个channel publish news ...

  2. Redis的消息发布和订阅

    Redis的消息发布和订阅 Author:SimpleWu GitHub-redis 什么是消息发布和订阅? Redis 发布订阅(pub/sub)是一种进程间的消息通信模式: 发送者(pub)发送消 ...

  3. .NetCore使用Redis,StackExchange.Redis队列,发布与订阅,分布式锁的简单使用

    环境:之前一直是使用serverStack.Redis的客服端,今天来使用一下StackExchange.Redis(个人感觉更加的人性化一些,也是免费的,性能也不会差太多),版本为StackExch ...

  4. redis 笔记06 发布与订阅、事务、慢查询日志、监视器

    发布与订阅 1. 服务器状态在pubsub_channels字典保存了所有频道的订阅关系:SUBSCRIBE命令负责将客户端和被订阅的频道关联到这个字典里面,而UNSUBSCRIBE命令则负责 解除客 ...

  5. Redis消息之发布与订阅

    "发布/订阅"可以实现进程间的消息传递 发布的消息不会持久化,只能收到订阅后的消息,执行subscribe命令后客户端会进入"订阅"状态,处于此状态下的客户端不 ...

  6. redis 事务 及发布于订阅功能

    事务: Redis事务可以一次执行多个命令,事务具有以下特征: 1.隔离操作:事务中的所有命令都会序列化.按顺序地执行,不会被其他命令打扰. 2.原子操作:事务中的命令要么全部被执行,要么全部都不执行 ...

  7. redis 实现消息发布和订阅

    1,打开二个客户端机器 一个用于发布,一个用于接受 2,发布一个channel1 3,用另外一个客户端收听上面的客户端 4,当再次在发布的redis客户端 发布一个消息  其他所有订阅的客户端会自动收 ...

  8. Redis 之消息发布与订阅(publish、subscribe)

    使用办法: 订阅端: Subscribe 频道名称 发布端: publish 频道名称 发布内容 一般做群聊,聊天室,发布公告信息等.

  9. Redis入门到高可用(十四)—— bitmap

    一.初步认识 二.API 1.setbit 2.getbit 3.bitcount 4.bitop 5.bitpos 三.位图使用 四. 使用经验

  10. 史上最简单的 SpringCloud 教程 | 第十四篇: 服务注册(consul)

    转载请标明出处: 原文首发于:https://www.fangzhipeng.com/springcloud/2017/07/12/sc14-consul/ 本文出自方志朋的博客 这篇文章主要介绍 s ...

随机推荐

  1. GoLand打开后Project消失

    一直用的好好的Goland,突然不能用了,左边栏Project"消失"了. 如下: 解决方法 遇到上面问题,一般情况是GoLand的cache问题,这个时候要将GoLand清理一下 ...

  2. 英语单词 重读 注意第六条 类似tion前面的重读这种的

    单词音节重读的10个基本判断规则: 1.一个单词只有一个重读音节 无论该单词有多少个音节(syllable),其重读音节只有一个,而且都在元音上,辅音不重读.单音节词也重读,只是省略了重音符号.如:b ...

  3. Windows 安装 Rust 并设置镜像加速

    目录 下载rustup-init.exe(Rust安装工具) 使用镜像加速rustup安装 安装Rust 安装标准库源码 使用镜像加速cargo包下载 安装结果确认 更新.卸载和文档查看 参考文档 下 ...

  4. Python使用pyecharts库构建股票交易 可交互可视化展示——基于Tushare大数据开放社区

    Python使用pyecharts库构建股票交易 可交互可视化展示--基于Tushare大数据社区 1.前言 大家好!欢迎各位访问我的博客,今天给大家分享的是 python使用pyecharts库构建 ...

  5. electron 下网页获取 micphone 权限

    网页获取麦克风或摄像头权限我们只需调用 navigator.mediaDevices.getUserMedia 方法就可唤起浏览器用户授权 const useMicphone = async () = ...

  6. 记一次配置mybatis plus报错有感

    参考,欢迎点击原文:https://blog.csdn.net/wwrzyy/article/details/86034458(问题原因) https://www.jianshu.com/p/28d6 ...

  7. 三维模型3DTile格式轻量化在数据存储的重要性分析

    三维模型3DTile格式轻量化在数据存储的重要性分析 三维模型3DTile格式轻量化在数据存储中占有重要地位.随着科技的不断发展,尤其是空间信息科技的进步,人们对于三维地理空间数据的需求日益增长.然而 ...

  8. 浅析三维模型3DTile格式轻量化处理常见问题与处理措施

    浅析三维模型3DTile格式轻量化处理常见问题与处理措施 三维模型3DTile格式的轻量化处理是大规模三维地理空间数据可视化的关键环节,但在实际操作过程中,往往会遇到一些问题.下面我们来看一下这些常见 ...

  9. FreeRTOS教程9 软件定时器

    1.准备材料 正点原子stm32f407探索者开发板V2.4 STM32CubeMX软件(Version 6.10.0) Keil µVision5 IDE(MDK-Arm) 野火DAP仿真器 XCO ...

  10. hdfs的透明加密记录

    1.背景 我们知道,在hdfs中,我们的数据是以block块存储在我们的磁盘上的,那么默认情况下,它是以密文存储的,还是以明文存储的呢?如果是明文存储的,那么是否就不安全呢?那么在hdfs中是如何做才 ...