*Redis PUBSUB NUMSUB 命令

PUBSUB NUMSUB 是 PUBSUB 命令的子命令,用于返回指定频道的订阅者数量。


*语法

PUBSUB NUMSUB [channel [channel ...]]

*参数说明

参数 类型 必填 说明
channel String 要查询的频道名称,可指定多个

*返回值

  • Array:频道名称和订阅者数量交替组成的数组
    • 格式:[channel1, count1, channel2, count2, ...]
  • 如果频道不存在或没有订阅者,返回 count 为 0

*时间复杂度

O(N),其中 N 为请求的频道数量


*示例

*查询单个频道的订阅者数量

> PUBSUB NUMSUB news
1) "news"
2) (integer) 3

*查询多个频道

> PUBSUB NUMSUB news chat notifications
1) "news"
2) (integer) 3
3) "chat"
4) (integer) 1
5) "notifications"
6) (integer) 0

*无参数查询

> PUBSUB NUMSUB
(empty array)

*常见错误

错误 原因 解决
返回 count 为 0 频道没有订阅者 这是正常状态,确认频道名称是否正确

*最佳实践

  • 使用 PUBSUB NUMSUB 监控关键频道的订阅情况,评估消息投递范围
  • 发布消息前可检查目标频道的订阅者数量,避免无意义的发布
  • 配合 PUBSUB CHANNELS 获取活跃频道列表,再用 NUMSUB 获取详细数据
  • 可用于监控系统的实时连接数和活跃度

*FAQ

Q1: PUBSUB NUMSUB 返回的订阅者数量包含模式订阅吗? A: 不包含,只统计通过 SUBSCRIBE 直接订阅的客户端。模式订阅的数量需要使用 PUBSUB NUMPAT。

Q2: 查询不存在的频道会报错吗? A: 不会,返回该频道的订阅者数量为 0。

Q3: 可以查询多少个频道? A: 没有硬性限制,但查询频道过多会增加命令执行时间,建议分批查询。