04 Cluster 分片

Cluster 分片

Cluster 客户端按 16384 个槽定位主节点;MOVED 更新长期路由,ASK 只用于迁槽过程中的一次临时重定向。
版本:Redis Open Source 8.10.3;核实日期:2026-11-12。官方在线文档可能继续更新,源码链接固定到对应发布标签。图为原理抽象,省略非本页重点。
specification { element actor { style { shape person; color amber } } element system { style { color muted } } element component { style { color primary } } element storage { style { shape storage; color green } } } model { c = actor 'Cluster 客户端' a = system '节点 A' b = system '槽所属节点 B' bus = component 'Cluster 总线' } views { dynamic view index { title '核心链路' variant sequence c -> c '按 key 或 hash tag 计算 CRC16 槽号' c -> a '向缓存路由节点发送命令' a -> c '槽已转移时返回 MOVED' c -> c '更新槽缓存' c -> b '重试命令到目标节点' b -> c '执行并返回结果' a -> bus '交换节点与槽状态' bus -> b '传播集群拓扑信息' } }

关键判断

  • 同槽键由同一主节点处理;多键操作通常要求相关键处在同槽,hash tag 可让一组键共用槽。
  • 普通请求由客户端直接发给目标节点;Cluster 总线交换拓扑与故障信息,不是所有命令的转发代理。
  • 迁槽期间 ASK 要求客户端对目标节点先发 ASKING 再执行本次命令;不要据此永久覆盖槽映射。

边界

图画稳定槽归属变化的 MOVED 分支;Cluster 的异步复制仍有写丢失窗口,分片不等于强一致。

官方出处与源码

回到首页 · 上一篇