redis高级应用-公布与订阅

一、公布与订阅(pub/sub)功能

二、公布与订阅(pub/sub)机制

三、redis公布与订阅(pub/sub)的实现

一、公布与订阅(pub/sub)功能

Pub/Sub功能(meansPublish, Subscribe)即公布及订阅功能。基于事件的系统中,Pub/Sub是眼下广泛使用的通信模型。它採用事件作为主要的通信机制。提供大规模系统所要求的松散耦合的交互模式:订阅者(如client)以事件订阅的方式表达出它有兴趣接收的一个事件或一类事件;公布者(如server)可将订阅者感兴趣的事件随时通知相关订阅者

公布/订阅的简易模型例如以下图所看到的:

二、公布与订阅(pub/sub)类别

1、时间非耦合:公布者和订阅者不必同一时候在线,它们不必同一时候參与交互

2、空间非耦合:公布者和订阅者不必相互知道对方所在的位置。

公布者通过事件服务公布事件,订阅者通过事件服务间接获得事件。公布者和订阅者不须要拥有直接到对方的引用。也不必知道有多少个订阅者或者是公布者參与交互

3、同步非耦合:公布者/订阅者是异步模式。公布者可不断地生产事件。而订阅者(通过一个回调)则可异步地得到产生事件的通知

总结:

Pub/Sub是可适用于可扩展要求高、松散耦合系统的分布式交互模型。

在抽象层中,它的时间非耦合、空间非耦合和同步非耦合性可同意參与者不依赖还有一个而独立操作,具有一定的可扩展性;然而在实现层,可扩展性仍受其它原因的牵制。

比如:1、灵活的订阅要求复杂的过滤和路由算法。

        2、高可用性开销(事件侦听、日志重传);

        3、消息认可带来的网络流量消耗。

        4、庞大的订阅者数据带来的系统开销;

基于事件的Pub/Sub中间件的开发与利用在一定程度上能够提高系统的效率

三、redis公布与订阅(pub/sub)的实现

redis 通过 publish 、subscribe、unsubscribe等命令实现了订阅与公布模式。 这个功能提供两种信息机制,各自是订阅/公布到频道和订阅/公布到模式。在这个实现中。 发送者(发送信息的client)不是将信息直接发送给特定的接收者(接收信息的client),而是将信息发送给频道(channel)或模式。 然后由频道/模式将信息转发给全部对这个频道感兴趣的订阅者

1、publish、subscribe、unsubscribe、psubscribe、punsubscribe命令说明

a、subscribe:订阅频道

b、unsubscribe:退订频道

c、publish:往某个频道,公布消息

d、psubscribe: 订阅模式频道

e、punsubscribe: 退订模式频道

2、频道的订阅与信息公布简单实例

(备注: 订阅端订阅频道one,然后再公布端公布消息’hello world’,此时。订阅端就会显示公布的消息. )

3、基于模式的订阅与信息公布简单实例

4、消息格式

4.1、假设是订阅频道。则返回消息类型(message),频道名称、详细消息内容

4.2、假设是基于模式,则返回消息类型(pmessage)、模式名称、详细频道名称、详细消息内容

5、理解订阅频道和订阅模式

订阅频道,client则须要指明详细对应订阅的频道的名称。相反。订阅模式,client能够订阅一个带 * 号的模式。 假设某个/某些频道的名字和这个模式匹配, 那么当有信息发送给这个/这些频道的时候, client也会收到这个/这些频道的信息

小贝_redis高级应用-公布与订阅的更多相关文章

  1. 小贝_redis 高级应用-事务

    redis高级应用-事务 一.redis的事务 二.redis实现事务 三.redis事务问题 一.redis的事务 事务提供了一种"将多个命令打包,然后一次性.按顺序地运行"的机 ...

  2. 小贝_redis高级应用-安全性

    redis高级应用-安全性 一.为什么redis须要安全性 二.设置redis验证password 三.验证   一.为什么redis须要安全性 1.redis作为数据的存储介质.假设无法保证redi ...

  3. 小贝_redis hash类型学习

    Redis  Hash类型 一.查看hash类型的命令 二.操作hash命令具体解释 一.查看hash类型的命令 1.输入 help@hash 127.0.0.1:6379>help @hash ...

  4. 小贝_redis list类型学习

    redis  list类型 一.查看list类型的命令 二.list命令具体解释 一.查看list类型的命令 1.在终端数据 help @list 127.0.0.1:6379>help @li ...

  5. 小贝_redis web管理界面工具安装

    RedisWEB管理界面工具安装 一.概述 二.文件下载 三.安装过程 一.概述 1.因为redis是基于C/S的方式开发.也就是说,仅仅要满足于redis的client通信要求的,都能够作为redi ...

  6. sqlserver2005公布与订阅配置步骤

    1,新建公布 前提条件:第一要调通网络,在sqlserver configuration manager 中选择mssqlserver的协议把named pipes改为启用.第二要建立一个目录D:\b ...

  7. Sql2008 r2 使用ftp 公布和订阅方式同步数据

    Sql2008 r2使用公布和订阅方式同步数据 因为非常多图片 本篇没有图片 详情能够进入下载页  http://download.csdn.net/download/yefighter/760374 ...

  8. 小贝_php+redis简单实例

    php+redis简单实例 一.说明 因为redis是c/s架构.从这个角度上.不论什么符合redis的client要求的.都能够与redis进行通讯.官方提供了非常多的client. php在web ...

  9. 微信小程序新服务消息推送 —— 订阅消息

    微信团队前不久公测了「订阅消息」,原有的小程序模板消息接口将于 2020 年 1 月 10 日下线,届时将无法发送模板消息.「订阅消息」将完全替代「模板消息」,这两天得空测试了一波. 1.下发权限机制 ...

随机推荐

  1. [BZOJ1032][P1840] 祖玛 记忆化搜索 动态规划

        描述 Description     某天,小x在玩一个经典小游戏——zumo.zumo游戏的规则是,给你一段长度为n的连续的彩色珠子,珠子的颜色不一定完全相同,但是,如果连续相同颜色的珠子大 ...

  2. Python入门,以及简单爬取网页文本内容

    最近痴迷于Python的逻辑控制,还有爬虫的一方面,原本的目标是拷贝老师上课时U盘的数据.后来发现基础知识掌握的并不是很牢固.便去借了一本Python基础和两本爬虫框架的书.便开始了自己的入坑之旅 言 ...

  3. 【BZOJ】2131: 免费的馅饼

    2131: 免费的馅饼 Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 508  Solved: 310[Submit][Status][Discuss ...

  4. 《深入理解Spark-核心思想与源码分析》(五)第五章任务提交与执行

    即欲捭之贵周,即欲阖之贵密.周密之贵,微而与道相随.---<鬼谷子> 解释:译文:如果要分析问题,关键在于周详,如果要综合归纳问题,关键在于严密.周详严密的关键在于精深而与道相随. 解词: ...

  5. hdu 5211 Mutiple 数学

    Mutiple Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5211 ...

  6. 线程,线程安全与python的GIL锁

    今天看到一篇文章,讲述的是几个提升python性能的项目:传送门 在看的过程中,接触到一个名词,一个从学python开始就一直看到,但是从来都是一知半解的名词,心里不开心,必须把它搞明白,对了,这个词 ...

  7. 客户端获取ip

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. POJ 1286 Necklace of Beads(Polya简单应用)

    Necklace of Beads 大意:3种颜色的珠子,n个串在一起,旋转变换跟反转变换假设同样就算是同一种,问会有多少种不同的组合. 思路:正规学Polya的第一道题,在楠神的带领下,理解的还算挺 ...

  9. IDA Bitfields

    Bitfields There is a special kind of enums: bitfields. A bitfield is an enum where the 32bits are di ...

  10. 关于spring-mvc.xml的mvc:resources元素浅析。

    配置如下: <!-- 配置静态资源 --><mvc:resources location="/static/" mapping="/static/**& ...