# 发布/订阅

URL: https://caijiao.org/redis/05-advanced/01-pubsub
Source: docs/redis/05-advanced/01-pubsub.md
Description: Redis 发布/订阅（Pub/Sub）是一种消息通信模式，允许客户端发布消息到频道，其他客户端订阅接收，实现实时消息广播和异步通信。

Redis 的发布/订阅（Pub/Sub）是一种消息通信机制，客户端可以向一个或多个频道发布消息，订阅该频道的客户端会实时接收到消息。

## 基本概念

- **发布者（Publisher）**：向频道发送消息的客户端。
- **订阅者（Subscriber）**：订阅一个或多个频道，接收消息的客户端。
- **频道（Channel）**：消息的载体，发布者和订阅者通过频道通信。

## 主要命令

- **SUBSCRIBE**：订阅一个或多个频道

```bash
SUBSCRIBE channel1 [channel2 ...]
````

* **UNSUBSCRIBE**：取消订阅一个或多个频道

```bash
UNSUBSCRIBE channel1 [channel2 ...]
```

* **PUBLISH**：向指定频道发布消息

```bash
PUBLISH channel message
```

* **PSUBSCRIBE**：按模式订阅频道（支持通配符）

```bash
PSUBSCRIBE pattern
```

* **PUNSUBSCRIBE**：取消模式订阅

```bash
PUNSUBSCRIBE pattern
```

## 工作流程

1. 订阅者使用 `SUBSCRIBE` 命令订阅一个或多个频道。
2. 发布者通过 `PUBLISH` 命令向某频道发送消息。
3. Redis 将消息推送给所有订阅该频道的客户端。
4. 订阅者实时接收消息，实现即时通信。

## 特点与限制

* 发布/订阅消息不会持久化，订阅者不在线时会错过消息。
* 不支持消息队列功能，适合实时广播。
* 简单易用，适合事件通知、实时聊天等场景。

## 应用场景

常用于实时聊天系统、消息广播、事件通知、日志收集等需要低延迟消息传递的场景。
