ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

20. Redis---发布订阅

2022-08-17 20:02:40  阅读:201  来源: 互联网

标签:订阅 www 20 Redis 频道 --- net biancheng channel


1. 前言

Redis PubSub 模块又称发布订阅者模式,是一种消息传递系统,实现了消息多播功能。发布者(即发送方)发送消息,订阅者(即接收方)接收消息,而用来传递消息的链路则被称为 channel。在 Redis 中,一个客户端可以订阅任意数量的 channel(可译为频道)。

消息多播:生产者生产一次消息,中间件负责将消息复制到多个消息队列中,每个消息队列由相应的消费组进行消费,这是分布式系统常用的一种解耦方式。

2. 发布/订阅流程

下面的示例演示了“发布/订阅者”模式的工作流程,示意图如下所示:

Redis PubSub消息发布订阅
图1:发布订阅模式

1) 订阅者/等待接收消息

首先打开 Redis 客户端,然后订阅了一个名为“www.biancheng.net”的 channel,使用如下命令:

#订阅channel
127.0.0.1:6379> SUBSCRIBE www.biancheng.net
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "www.biancheng.net"
3) (integer) 1 

上述示例使用SUBSCRIBE命令订阅了名为 www.biancheng.net 的 channel。命令执行后该客户端会出处于等待接收消息的阻塞状态。

2) 发布者/发送消息

下面再启动一个 Redis 客户端,输入如下命令:

127.0.0.1:6379> PUBLISH www.biancheng.net "this is website"
(integer) 1
127.0.0.1:6379> PUBLISH www.biancheng.net "hello world"
(integer) 1
127.0.0.1:6379> PUBLISH www.biancheng.net "how are you"
(integer) 1

通过上述PUBLISH命令发布了三条信息。现在两个客户端在处于同一个名为“www.biancheng.net”的频道上,前者负责接收消息,后者负责发布消息。

3) 订阅者/成功接收消息

完成了上述操作后,您会在接收消息的客户端得到如下输出结果:

127.0.0.1:6379> SUBSCRIBE www.biancheng.net
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "www.biancheng.net"
3) (integer) 1
1) "message"
2) "www.biancheng.net"
3) "this is website"
1) "message"
2) "www.biancheng.net"
3) "hello world"
1) "message"
2) "www.biancheng.net"
3) "how are you"

3. 常用命令汇总

Redis PubSub常用命令
命令说明
PSUBSCRIBE pattern [pattern ...] 订阅一个或多个符合指定模式的频道。
PUBSUB subcommand [argument [argument ...]] 查看发布/订阅系统状态,可选参数
1) channel 返回在线状态的频道。
2) numpat 返回指定模式的订阅者数量。
3) numsub 返回指定频道的订阅者数量。
PUBSUB subcommand [argument [argument ...]] 将信息发送到指定的频道。
PUNSUBSCRIBE [pattern [pattern ...]] 退订所有指定模式的频道。
SUBSCRIBE channel [channel ...] 订阅一个或者多个频道的消息。
UNSUBSCRIBE [channel [channel ...]] 退订指定的频道。

 

4. 基本命令应用

下面对上述常用命令做演示:

#订阅指定模式的频道,*代表通配符,会匹配所有www开头的频道
127.0.0.1:6379> PSUBSCRIBE www*
Reading messages... (press Ctrl-C to quit)
1) "psubscribe"
2) "www*"
3) (integer) 1
#按ctrl+c退出阻塞状态
^C
C:\Users\Administrator>redis-cli
#查看发布订阅系统状态,返回相应的频道
127.0.0.1:6379> PUBSUB channels
1) "www.biancheng.net"
#退订指定模式的频道
127.0.0.1:6379> PUNSUBSCRIBE www*
1) "punsubscribe"
2) "www*"
3) (integer) 0
#退订指定频道
127.0.0.1:6379> UNSUBSCRIBE www.biancheng.net
1) "unsubscribe"
2) "www.biancheng.net"
3) (integer) 0

注意:每个模式以*作为匹配符,比如 www* 匹配所有以 www 开头的频道,比如 www.baidu.com 、www.biancheng.net  等等。

在线练习工具:https://try.redis.io/
查看更多命令:https://redis.io/commands

标签:订阅,www,20,Redis,频道,---,net,biancheng,channel
来源: https://www.cnblogs.com/jiajunling/p/16596550.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有