Redis Cluster 分片与主从详解
一、分片(Sharding)含义
Redis 分片 = 数据分布式切分
把整个 Redis 数据集按照一定规则,拆分到多个独立 Redis 实例上
目的:
突破单机内存 / CPU / 网卡瓶颈
支撑更大并发、更大数据量
水平扩展
Redis Cluster 采用的是哈希槽分片,是官方原生分片方案。
二、哈希槽(Hash Slot)是什么
Hash Slot = 分片的最小管理单元
Redis Cluster 规定:
全局统一有16384 个哈希槽(0~16383)
每个 key 计算:
CRC16\(key\) % 16384→ 得到一个槽号集群把槽分配给不同主节点
节点负责自己槽上的所有 key
一句话:
槽 = 数据分片的载体,节点 = 槽的管理者
三、16384 个哈希槽 = 最多部署 16384 个节点吗?
绝对不是!完全两回事!
这是高频面试坑点,必须咬死:
16384 是槽数量,不是节点上限
一个节点可以负责多个槽
槽总数固定 16384,节点数远小于 16384
Redis Cluster 官方建议主节点上限:≤ 1000 个
实际生产几乎没有超过 20 个主节点的。
四、Redis Cluster 区分主从节点吗?
严格区分!而且必须区分!
1. 主节点(Master)
负责哈希槽
处理读写请求
参与集群选举、故障判断
2. 从节点(Slave)
不负责任何槽
只同步主节点数据
主挂了时自动切换为主(故障转移)
平时可做读负载均衡
结构:
一个主 + 若干从 = 一个分片组
整个集群由多个分片组组成。
五、生产环境 Redis Cluster 一般部署多少台?
1. 最经典、最常用:3 主 3 从(共 6 台)
3 个主节点,均分 16384 个槽
每个主配 1 个从
满足高可用,任何一台主宕机都能自动切换
适合绝大多数企业、中高并发
2. 高可用更强:3 主 6 从(共 9 台)
每个主挂 2 个从
适合金融、支付、核心业务
3. 超大流量:6 主 6 从 / 8 主 8 从
槽更细,单节点压力更小
适合高并发、大数据量(如亿级 key)
4. 绝对不推荐
1 主 N 从:不是集群,是哨兵模式
2 主:选举需要半数以上主节点同意,2 主容易脑裂 / 无法选举
主节点数量建议:奇数(3、5、7…)
极简总结(面试背诵版)
分片:把数据切分到多实例,突破单机瓶颈。
哈希槽:Redis Cluster 分片单元,共 16384 个,key 取模落到槽。
16384≠节点上限:是槽数,节点远小于 16384,官方建议≤1000 主。
Cluster 严格分主从:主负责槽、读写;从负责备份与故障切换。
生产标配:3 主 3 从(6 台),奇数主节点,高可用最稳。
