抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

摘要:本文介绍了Redis的发布订阅。

环境

Windows 10 企业版 LTSC 21H2
Redis 7.4.8

1 概述

Redis的发布订阅是一种消息通信模式,它允许发布者发送消息,订阅者接收消息。

发布订阅模式可以用于实现消息队列、事件通知、实时通信等场景。

2 特点

发布订阅特点:

  • 松耦合:发布者和订阅者之间不需要直接通信,通过频道进行消息传递。
  • 多对多:一个发布者可以向多个频道发布消息,一个订阅者可以订阅多个频道。
  • 实时性:消息会实时传递给订阅者,不需要轮询。
  • 无持久化:默认情况下,消息不会持久化,如果订阅者离线,会错过消息。

3 原理

工作原理:

  1. 发布者向指定频道发送消息。
  2. 服务器将消息分发给所有订阅该频道的订阅者。
  3. 订阅者接收并处理消息。

核心角色:

  • 发布者:消息的发送者,负责将消息发送到指定的频道。
  • 订阅者:消息的接收者,负责订阅频道,接收并处理消息。
  • 频道:消息传递的通道,连接发布者和订阅者的桥梁。

4 使用

4.1 命令

命令:

  • PUBLISH channel message:向指定频道发布消息。
  • SUBSCRIBE channel ... channel:订阅一个或多个频道。
  • UNSUBSCRIBE:取消订阅一个或多个频道。
  • PSUBSCRIBE:模式订阅,订阅通配符模式匹配的频道。
  • PUNSUBSCRIBE:取消模式订阅,取消订阅通配符模式匹配的频道。
  • PUBSUB 子命令:查看发布订阅的状态。

通配符:

  • *:匹配任意数量的字符。
  • ?:匹配任意一个字符。
  • [abc]:匹配方括号中的任意一个字符。

4.2 示例

4.2.1 订阅频道

订阅频道:

cmd
1
2
3
4
5
6
7
8
127.0.0.1:6379> SUBSCRIBE student teacher
1) "subscribe"
2) "student"
3) (integer) 1
1) "subscribe"
2) "teacher"
3) (integer) 2
Reading messages... (press Ctrl-C to quit or any key to type command)

说明:

  1. 第一行表示打印类型。
  2. 第二行表示订阅的频道名称。
  3. 第三行表示订阅的频道数量。

订阅频道后会持续接收消息:

cmd
1
2
3
4
1) "message"
2) "student"
3) "Alice"
Reading messages... (press Ctrl-C to quit or any key to type command)

可以通过Ctrl-C退出订阅状态,也可以直接输入命令。

4.2.2 取消订阅

取消订阅:

cmd
1
2
3
4
5
127.0.0.1:6379(subscribed mode)> UNSUBSCRIBE teacher
1) "unsubscribe"
2) "teacher"
3) (integer) 1
Reading messages... (press Ctrl-C to quit or any key to type command)

4.2.3 发布消息

发布消息:

cmd
1
2
3
127.0.0.1:6379> PUBLISH student Alice
(integer) 1
127.0.0.1:6379>

会返回订阅频道的订阅者数量。

4.2.4 查看状态

支持的子命令:

  • CHANNELS:查看所有订阅的频道,不包含模式订阅的频道。
  • NUMSUB channel:查看指定频道的订阅者数量,不包含模式订阅的频道。
  • NUMPAT:查看模式订阅的频道数量。

评论