*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!"

*常见错误

  1. 性能问题* 匹配所有频道,客户端收到大量消息,CPU 和网络压力大。

*最佳实践

  1. 命名空间订阅:用 app.module.* 订阅某模块的所有事件,而非每个频道单独订阅。
  2. 注意性能:避免 * 订阅所有频道,只在必要时用宽泛模式。

*FAQ

Q: PSUBSCRIBE 和 SUBSCRIBE 有什么区别? A: SUBSCRIBE 订阅具体频道名;PSUBSCRIBE 订阅模式,匹配多个频道。一个消息可能匹配多个模式,客户端会收到多次。

Q: 同一消息匹配多个模式怎么办? A: 客户端会收到多次该消息(每次匹配一个模式)。业务层需去重或幂等处理。