*Redis PUBSUB SHARDCHANNELS 命令

返回当前活跃的 shard 频道列表(Redis 7.0+ 分片发布订阅)。


*语法

PUBSUB SHARDCHANNELS [pattern]

*参数说明

参数 类型 必填 说明
pattern String 匹配模式,支持 *? 通配符;不提供则返回所有活跃 shard 频道

*返回值

条件 返回值
有活跃频道 字符串数组,列出匹配的活跃 shard 频道名
无活跃频道 空数组 []

*时间复杂度

O(N),N 为活跃 shard 频道数量


*示例

*返回所有活跃 shard 频道

> PUBSUB SHARDCHANNELS
1) "news:sports"
2) "news:tech"

*按模式匹配

> PUBSUB SHARDCHANNELS news:*
1) "news:sports"
2) "news:tech"

> PUBSUB SHARDCHANNELS weather:*
(empty array)

*检查特定频道是否活跃

> PUBSUB SHARDCHANNELS *sports*
1) "news:sports"

*常见错误

错误 原因 解决
ERR wrong number of arguments 参数数量错误 最多接受 1 个 pattern 参数

*最佳实践

  • 场景:监控分片发布订阅系统的活跃频道,排查订阅异常
  • PUBSUB SHARDNUMSUB 配合使用,获取频道及订阅者数量
  • 仅在 Redis Cluster 模式下使用 shard pub/sub 功能
  • pattern 使用 * 匹配所有频道,不使用 pattern 参数行为相同

*FAQ

Q1: PUBSUB SHARDCHANNELS 和 PUBSUB CHANNELS 有什么区别? A: PUBSUB CHANNELS 返回全局 pub/sub 的活跃频道;PUBSUB SHARDCHANNELS 返回分片 pub/sub(shard pub/sub,Redis 7.0+)的活跃频道。分片 pub/sub 只在 Redis Cluster 中有效,消息仅在同一个 slot 的节点间传播。

Q2: 没有订阅者后频道还会出现在列表中吗? A: 不会。只有至少有一个活跃订阅者的频道才会被列出。

Q3: 可以在非 Cluster 模式下使用吗? A: 可以执行,但分片 pub/sub 主要设计用于 Redis Cluster。单机模式下结果通常为空或仅包含本地订阅。