Redis 集群数据分片
面试官问:"Redis Cluster 是怎么做数据分片的?"
小陈说:"用 slot。"
面试官追问:"16384 个 slot 是怎么映射到 key 的?"
小陈说:"...取模?"
面试官继续追问:"为什么是 16384 而不是 65536?"
小陈答不上来。
Hash Slot 是 Redis Cluster 数据分片的核心。这道题能说清楚 CRC16 算法和 Key Tag 技巧的候选人,对 Redis Cluster 的数据分片有深入理解。
一、Slot 映射原理 🔴
1.1 CRC16 算法
1.2 为什么是 16384?
1.3 ❌ 错误示范
候选人原话:"用哈希算法把 key 分到不同 slot。"
问题诊断:不精确。Redis Cluster 用的是 CRC16,不是普通的哈希算法。CRC16 的分布更均匀,且结果在固定范围内。
【面试官心理】 这道题我会追问"为什么不用 MD5 或 SHA1"。能说清楚 CRC16 的优势和 16384 的权衡的候选人,说明他对 Cluster 的设计有深入理解。
二、Key Tag 技巧 🟡
2.1 问题
2.2 Key Tag 解决方案
2.3 Key Tag 的限制
三、槽迁移 🟡
3.1 在线槽迁移
3.2 迁移过程中的访问
四、槽统计 🟡
4.1 查看槽分布
4.2 均衡性监控
【面试官心理】 Hash Slot 是 Redis Cluster 的核心概念。能说清楚 CRC16 算法、Key Tag、16384 数量选择原因的候选人,说明他对 Redis Cluster 有源码级别的理解。