Pub/Sub 应用场景与应用接口|学习笔记

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 快速学习 Pub/Sub 应用场景与应用接口

开发者学堂课程云数据库 Redis 版使用教程Pub/Sub应用场景与应用接口笔记与课程紧密联系,让用户快速学习知识。

课程地https://developer.aliyun.com/learning/course/434/detail/5399


Pub/Sub 应用场景与应用接口


内容介绍:

一、Pub/Sub 模式

二、RedisPub/Sub 实现

三、RedisPub/Sub 接口

四、RedisPub/Sub 应用场景示例


一、Pub/Sub模式

首先我们看一下发布订阅模式,在这个模式下存在发布者和订阅者两

种模式;

发布者向特定的频道发布消息,而不用关心有哪些订阅者订用了这些

消息;而订阅者会订阅特定的平道,不需要关注这些消息是谁发送的。

通过此方式可以将两种关系在代码和系统部署区分开来,具有灵活

性。

图片6.png

Pub/Sub包括:

订阅者(如:客户端)

订阅者(subscriber)

订阅者(subscriber)

发布者(如:服务器)

发布者(publisher)

发布者(publisher)


二、Redis Pub/Sub实现

图片7.png主要数据结构是 sever.pubsub Chanels,这是一个字典,里面的每一个Chanel对应每一个 list,list 内保存了所有订阅Chanel的信息。

图片8.png 

我们来看一个实际的例子:

例子中有三个频道:news.it,news.sport,news.business.

图中反映出一个 client 可以订阅多个频道。

client-1、client-2、client-3三个客户端正在订阅•news.it”频道。

客户端 client-4 正在订阅“news.sport”频道。

elient-5 和 client-6 两个客户端正在订阅“news.business”频道。

pubsub channels

"news.it"→client-1→client-2→client-3

“news.sport”→client-4

“news.business”→client-5→client-6


三、 Redis Pub/Sub接口

归类为三个接口:

第一类是最基础的 publist 和 subscribe 对应的功能就是发布消息和订阅消息。

PUBLISH channel message 返回收到消息的客户端个数

客户端订阅频道的命令是:

SUBSCRIBE channel [channel ...]订阅一个或多个频道

取消订阅:

UNSUBSCRIBE channel [channel...]取消订阅一个或多个频道

PSUBSCRIBE pattern [pattern...]订阅一个或多个频道

PUNSUBSCRIBE pattern [pattern...]取消订阅一个或多个频道

Redis支持按模式订阅和取消订阅频道:

支持常用的订阅模式:?,*,[abc], [^abc], [a-b]

h?llo matches hello, hallo and hxllo

h?llo matches hllo and heeeello

h[ae]llo matches hello and hallo, but not hillo

h|^e]llo matches hallo, hbllo, ... but not hello

h[a-b]llo matches hallo and hbllo

查询订阅状态的结构:

PUBSUB CHANNELS [pattern]

返回符合模式(未指定情况下返回所有)的频道

PUBSUB NUMSUB [channel-1 ... channel-N]返回指定的频道的订阅数

PUBSUB NUMPAT返回所有服务器中被订阅的模式数目

接下来操作一下PUBSUB 相关的api

图片9.png右上角订阅poo 接口,返回的的是订阅成功。

在右下角订阅 foo 和 bar 两个频道

左上角作为发布端,发布消息到foo频道

右侧两面都会收到 I am foo

左上角发布一个“I am bar”

因为只有右下角发出了关于bar的订阅,所以只有左下角收到“I am bar”

在右下角发布“unsubscribe foo”取消订阅

在右下角发布psubscrbe f*,以订阅f*频道

在左上角发布“publish foo I am foo 3”, 右侧两边都可以收到;

发布“publish ffff I am fff”,右侧下方可以收到;


四、Redis Pub/Sub应用场景示例-服务器集群监控管理

如果有服务器集群的话,监控管理是最基本的需求,需要知道所有服务器的状态信息,以及发出管理命令

Redis 服务器包括:

1、应用服务器AppSvr1

用 appsvr1_state 发送状态信息,用 appsvr1_statistic 发送统计信appsvr1_manage

接受监控服务器的管理命令

2、应用服务器AppSvr2

3、Web服务器

每个应用服务器可以分配一个Id,应用服务器会给监控服务器发送自己的状态、统计信息

4、监控服务器(订阅AppSvr1的状态频道和统计信息频道,会发布些管理的命名)可以单独订阅,也可以一次性订阅所有的服务器的消息频道。

每个服务器部署的时候需要 redis 服务器建立一个长链接,订阅管理命名的频道。

发送频道可以用长链接,也可以用短链接。Redis Pub/Sub 典型场景

聊天服务

消息推送

视频弹幕

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
8月前
|
供应链 安全 物联网
【接口加密】接口加密的未来发展与应用场景
【接口加密】接口加密的未来发展与应用场景
|
8月前
|
消息中间件 负载均衡 监控
【ZMQ PUB模式指南】深入探究ZeroMQ的PUB-SUB模式:C++编程实践、底层原理与最佳实践
【ZMQ PUB模式指南】深入探究ZeroMQ的PUB-SUB模式:C++编程实践、底层原理与最佳实践
2176 1
|
3月前
|
缓存 JavaScript
vue2基础组件通信案例练习:把案例Todo-list改成使用消息订阅与发布
vue2基础组件通信案例练习:把案例Todo-list改成使用消息订阅与发布
21 3
|
5月前
|
物联网 C# Windows
看看如何使用 C# 代码让 MQTT 进行完美通信
看看如何使用 C# 代码让 MQTT 进行完美通信
684 0
|
6月前
|
消息中间件 存储 Oracle
共识协议的技术变迁问题之能不能介绍下Share Log应用场景Pub/Sub
共识协议的技术变迁问题之能不能介绍下Share Log应用场景Pub/Sub
|
8月前
|
监控 安全 搜索推荐
Email发送API的方法?AOKSend和阿里云哪个效果更好?
Email发送API在企业与客户沟通中扮演关键角色,允许自动化和个性化邮件发送。本文比较了AOKSend和阿里云的API:AOKSend以其高送达率、快速发送和详细分析报告脱颖而出,适合中小企业;阿里云则凭借稳定性、大规模发送能力和综合云服务吸引大企业。选择合适API能优化邮件营销效果。
|
8月前
|
存储 SQL JavaScript
js常见的存储API以及应用场景?使用方式,各个优缺点?
【4月更文挑战第4天】JavaScript存储API包括`localStorage`、`sessionStorage`、`cookies`、`IndexedDB`和弃用的`Web SQL`。`localStorage`和`sessionStorage`用于页面数据存储,前者持久化,后者限当前会话。`cookies`适用于会话管理,但存储空间有限。`IndexedDB`适合大量结构化数据存储和查询。废弃的`Web SQL`曾提供关系型数据库功能。选择时需考虑数据性质、存储需求、安全性和兼容性。
121 2
|
8月前
|
NoSQL 应用服务中间件 Redis
Redis Pub/Sub: 实时消息传递的完美解决方案
Redis Pub/Sub: 实时消息传递的完美解决方案
240 0
|
人工智能 安全 前端开发
《深入浅出:理解API的工作原理和应用场景》
API是Application Programming Interface的缩写,是软件开发中基本的概念之一,也是Web开发中不可或缺的部分。API可以理解成应用程序提供给其他程序或者开发人员进行调用的一系列接口。在现代大数据、云计算和人工智能日渐成熟的今天,API的使用越来越广泛。
366 0
|
网络协议 程序员 测试技术
Go 接口应用场景的说明 | 学习笔记
快速学习 Go 接口应用场景的说明
Go 接口应用场景的说明 | 学习笔记