全书目录

第九篇:Redis 完全指南 —— 软件城市实时调度中心宇宙

第十五章:Cluster —— 一座调度中心不够时,就把城市拆成 16384 个分区

1 分钟 446 字 第 218 / 962 个阅读单元

单机 Redis 很快,但内存总有上限。

Redis Cluster 解决的是:

  • 横向扩容
  • 自动分片
  • 一定程度的可用性

Redis 官方文档说明,Cluster 不用一致性哈希,而是用 hash slot

最关键的数字:

text
Redis Cluster 一共有 16384 个 hash slots

每个 key 会映射到某一个 slot。

text
CRC16(key) % 16384 -> slot

例如:

text
Node A -> slots 0 - 5500
Node B -> slots 5501 - 11000
Node C -> slots 11001 - 16383
#Cluster 的核心心智
text
整个城市不是一座大楼
而是 16384 个分区窗口
每个节点负责其中一部分
#1. 扩容是搬 slot,不是整库停机迁移

官方文档特别强调:

  • 增删节点时,可以迁移 hash slots
  • 迁移 slot 不需要整库停机
#2. 多 key 操作有边界

Redis 官方文档明确写到:

  • 多 key 命令
  • 整个事务
  • Lua 脚本

都要求涉及的 key 落在同一个 hash slot

如果你想强制多个 key 进入同一个 slot,可以用 hash tags

text
order:{9001}:info
order:{9001}:status
order:{9001}:items

这样三者会进同一 slot。

#3. Cluster 不是“绝对不会挂”

官方文档写得很直白:

  • 少量节点故障时,集群可能继续工作
  • 但如果多数 master 不可用,集群会不可用

所以 Cluster 的本质是:

text
分片 + 一定程度高可用
不是无限神力