摘要:本文介绍了Redis的发布订阅。
环境
Windows 10 企业版 LTSC 21H2
Redis 7.4.8
1 概述
Redis的发布订阅是一种消息通信模式,它允许发布者发送消息,订阅者接收消息。
发布订阅模式可以用于实现消息队列、事件通知、实时通信等场景。
2 特点
发布订阅特点:
- 松耦合:发布者和订阅者之间不需要直接通信,通过频道进行消息传递。
- 多对多:一个发布者可以向多个频道发布消息,一个订阅者可以订阅多个频道。
- 实时性:消息会实时传递给订阅者,不需要轮询。
- 无持久化:默认情况下,消息不会持久化,如果订阅者离线,会错过消息。
3 原理
工作原理:
- 发布者向指定频道发送消息。
- 服务器将消息分发给所有订阅该频道的订阅者。
- 订阅者接收并处理消息。
核心角色:
- 发布者:消息的发送者,负责将消息发送到指定的频道。
- 订阅者:消息的接收者,负责订阅频道,接收并处理消息。
- 频道:消息传递的通道,连接发布者和订阅者的桥梁。
4 使用
4.1 命令
命令:
PUBLISH channel message:向指定频道发布消息。SUBSCRIBE channel ... channel:订阅一个或多个频道。UNSUBSCRIBE:取消订阅一个或多个频道。PSUBSCRIBE:模式订阅,订阅通配符模式匹配的频道。PUNSUBSCRIBE:取消模式订阅,取消订阅通配符模式匹配的频道。PUBSUB 子命令:查看发布订阅的状态。
通配符:
*:匹配任意数量的字符。?:匹配任意一个字符。[abc]:匹配方括号中的任意一个字符。
4.2 示例
4.2.1 订阅频道
订阅频道:
1 | 127.0.0.1:6379> SUBSCRIBE student teacher |
说明:
- 第一行表示打印类型。
- 第二行表示订阅的频道名称。
- 第三行表示订阅的频道数量。
订阅频道后会持续接收消息:
1 | 1) "message" |
可以通过Ctrl-C退出订阅状态,也可以直接输入命令。
4.2.2 取消订阅
取消订阅:
1 | 127.0.0.1:6379(subscribed mode)> UNSUBSCRIBE teacher |
4.2.3 发布消息
发布消息:
1 | 127.0.0.1:6379> PUBLISH student Alice |
会返回订阅频道的订阅者数量。
4.2.4 查看状态
支持的子命令:
CHANNELS:查看所有订阅的频道,不包含模式订阅的频道。NUMSUB channel:查看指定频道的订阅者数量,不包含模式订阅的频道。NUMPAT:查看模式订阅的频道数量。
条