*Redis PUBSUB CHANNELS 命令

PUBSUB CHANNELS 是 PUBSUB 命令的子命令,用于返回当前服务器中被订阅的频道列表。


*语法

PUBSUB CHANNELS [pattern]

*参数说明

参数 类型 必填 说明
pattern String 频道匹配模式,仅返回匹配该模式的频道。支持 glob 风格通配符

*返回值

  • Array:当前至少有一个订阅者的频道名称列表
  • 如果未指定 pattern,返回所有有订阅者的频道
  • 如果指定了 pattern,返回匹配该模式且有订阅者的频道

*时间复杂度

O(N),其中 N 为服务器中活跃频道的总数


*示例

*查看所有有订阅者的频道

> PUBSUB CHANNELS
1) "news"
2) "chat"
3) "notifications"

*按模式匹配频道

> PUBSUB CHANNELS news.*
1) "news.sports"
2) "news.tech"
3) "news.politics"

*使用通配符匹配

> PUBSUB CHANNELS *
1) "news"
2) "chat"
3) "notifications"
4) "news.sports"
5) "news.tech"

*常见错误

错误 原因 解决
返回空数组 没有任何频道被订阅 检查是否有客户端执行了 SUBSCRIBE
模式匹配无结果 模式语法错误或无匹配的订阅频道 验证模式语法,确认有对应订阅

*最佳实践

  • 使用 PUBSUB CHANNELS 监控系统的活跃频道,及时发现频道泄露
  • 配合 PUBSUB NUMSUB 获取每个频道的订阅者数量
  • 在调试消息发布问题时,先确认目标频道是否有订阅者
  • 生产环境可定期收集频道信息,用于监控和优化

*FAQ

Q1: PUBSUB CHANNELS 会返回模式订阅的频道吗? A: 不会,只返回通过 SUBSCRIBE 直接订阅的频道。PSUBSCRIBE 的模式订阅不会出现在该列表中。

Q2: 返回的频道一定当前有消息吗? A: 不一定,返回的是有订阅者的频道,不代表频道最近有消息发布。

Q3: 无订阅者的频道会出现在列表中吗? A: 不会,PUBSUB CHANNELS 只返回至少有一个订阅者的频道。