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
相关文章
|
5月前
|
供应链 安全 物联网
【接口加密】接口加密的未来发展与应用场景
【接口加密】接口加密的未来发展与应用场景
|
5月前
|
安全 数据安全/隐私保护
【接口加密】理解接口加密的基础概念
【接口加密】理解接口加密的基础概念
|
5月前
|
消息中间件 负载均衡 监控
【ZMQ PUB模式指南】深入探究ZeroMQ的PUB-SUB模式:C++编程实践、底层原理与最佳实践
【ZMQ PUB模式指南】深入探究ZeroMQ的PUB-SUB模式:C++编程实践、底层原理与最佳实践
1558 1
|
3月前
|
消息中间件 NoSQL 中间件
中间件发布-订阅模式(Pub/Sub)
【7月更文挑战第1天】
79 2
|
5月前
|
监控 安全 搜索推荐
Email发送API的方法?AOKSend和阿里云哪个效果更好?
Email发送API在企业与客户沟通中扮演关键角色,允许自动化和个性化邮件发送。本文比较了AOKSend和阿里云的API:AOKSend以其高送达率、快速发送和详细分析报告脱颖而出,适合中小企业;阿里云则凭借稳定性、大规模发送能力和综合云服务吸引大企业。选择合适API能优化邮件营销效果。
|
5月前
|
监控 安全 数据挖掘
Email 接口API有哪些?具体分析一下阿里云和AOK的优点
本文介绍了常见的Email接口API,如阿里云邮件推送、AOKSend、SendGrid、Mailgun和Amazon SES。阿里云API以其高稳定性和数据分析功能脱颖而出,支持批量发送和多语言;而AOKSend API以易于集成、高安全性和优秀客户支持为亮点。企业在选择时应考虑自身需求和预算,以优化邮件营销效果。
|
5月前
|
NoSQL 应用服务中间件 Redis
Redis Pub/Sub: 实时消息传递的完美解决方案
Redis Pub/Sub: 实时消息传递的完美解决方案
|
5月前
|
监控 安全 API
深入探讨API安全性与C#实例演示
在本篇文章中,我们将深入研究 API 的安全性,并通过使用 C# 的实际示例探索一些基本机制。
89 0
|
存储 机器学习/深度学习 数据挖掘
API技术的使用场景
互联网的发展和普及,API技术也变得越来越重要。API是应用程序接口,它是一种连接不同应用程序或系统之间数据交换和通信的方式。API技术不仅提高了不同应用程序之间的互操作性,还加速了应用程序的开发和部署。本文将探讨API技术在不同场景下的应用。
|
存储 数据可视化 数据挖掘
"探索API:解析应用程序接口的作用、功能和应用场景"
随着互联网技术的不断发展,API(Application Programming Interface)已经成为了连接不同应用程序之间的重要工具,API不仅可以帮助开发者更加容易地创建应用程序,同时还能提供更多的数据和功能,丰富了应用程序的体验和用户的使用感受。在本文中,我们将探讨API的作用、功能和应用场景。
148 0