*Redis PSUBSCRIBE 命令
订阅一个或多个符合给定模式(pattern)的频道。支持通配符 ?、*、[...]。
*语法
PSUBSCRIBE pattern [pattern ...]
*参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| pattern | String | 是 | 频道匹配模式,glob 风格 |
*返回值
进入订阅模式,持续接收匹配频道的消息。每条订阅确认返回 ["psubscribe", pattern, count]。
*时间复杂度
O(N),N 为订阅的模式数量。
*示例
# 订阅所有 news.* 频道
> PSUBSCRIBE news.*
Reading messages... (press Ctrl-C to quit)
1) "psubscribe"
2) "news.*"
3) (integer) 1
# 收到 news.sports 的消息
1) "pmessage"
2) "news.*"
3) "news.sports"
4) "Goal!"
# 收到 news.tech 的消息
1) "pmessage"
2) "news.*"
3) "news.tech"
4) "New release!"
*常见错误
- 性能问题:
*匹配所有频道,客户端收到大量消息,CPU 和网络压力大。
*最佳实践
- 命名空间订阅:用
app.module.*订阅某模块的所有事件,而非每个频道单独订阅。 - 注意性能:避免
*订阅所有频道,只在必要时用宽泛模式。
*FAQ
Q: PSUBSCRIBE 和 SUBSCRIBE 有什么区别? A: SUBSCRIBE 订阅具体频道名;PSUBSCRIBE 订阅模式,匹配多个频道。一个消息可能匹配多个模式,客户端会收到多次。
Q: 同一消息匹配多个模式怎么办? A: 客户端会收到多次该消息(每次匹配一个模式)。业务层需去重或幂等处理。