*SPUBLISH 命令
在 Sharded Pub/Sub 中发布消息到指定频道。Redis 7.0+ 引入,替代普通 Pub/Sub 在 Cluster 模式下的使用。
*语法
SPUBLISH channel message
*参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| channel | String | 是 | 频道名称 |
| message | String | 是 | 消息内容 |
*返回值
| 条件 | 返回值 |
|---|---|
| 成功 | 接收消息的客户端数量(Integer) |
*时间复杂度
O(N),N 为订阅该频道的客户端数量。
*示例
> SPUBLISH orders "new order #12345"
(integer) 2
*常见错误
- Cluster 模式下使用 PUBLISH:在 Cluster 中应使用 SPUBLISH,PUBLISH 只在单机模式下有效。
*最佳实践
- Cluster 模式消息发布:Redis Cluster 中使用 SPUBLISH 替代 PUBLISH,消息通过槽位路由到正确的节点。
*FAQ
Q: SPUBLISH 和 PUBLISH 有什么区别? A: SPUBLISH 是 Sharded Pub/Sub,消息通过槽位路由,适合 Cluster 模式;PUBLISH 是普通 Pub/Sub,消息广播到所有节点。Cluster 模式下优先使用 SPUBLISH。
Q: SPUBLISH 的频道和 key 槽位有什么关系? A: SPUBLISH 的频道通过槽位计算路由到特定节点,和普通 key 使用相同的槽位算法。