Redis集群模式
AI生成声明: 本文档由AI辅助生成,旨在提供Redis集群模式的完整指南。
Redis集群提供了高可用和水平扩展能力,理解集群模式对于设计大规模系统至关重要。
核心问题
集群架构
Redis Cluster特点:
- 无中心化架构
- 数据分片存储
- 自动故障转移
- 支持水平扩展
数据分片
哈希槽(Hash Slot):
- 共16384个槽位
- 每个节点负责部分槽位
- 通过CRC16(key) % 16384计算槽位
数据分布:
节点1: 0-5460
节点2: 5461-10922
节点3: 10923-16383集群模式
主从模式
- 一主多从
- 主节点负责写
- 从节点负责读
哨兵模式(Sentinel)
- 监控主从节点
- 自动故障转移
- 配置提供者
Cluster模式
- 多主多从
- 数据分片
- 自动故障转移
集群配置
主从配置
conf
# 主节点
port 6379
# 从节点
port 6380
replicaof 127.0.0.1 6379哨兵配置
conf
# sentinel.conf
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 10000Cluster配置
conf
# cluster.conf
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 15000故障转移
主节点故障
- 从节点检测到主节点故障
- 从节点发起选举
- 获得多数票的从节点升级为主节点
- 其他从节点指向新主节点
脑裂问题
原因:
- 网络分区
- 主节点被隔离
- 出现多个主节点
解决:
- 设置最小从节点数
- 设置主节点超时时间
常见面试题
Redis集群的优缺点?
- 优点:高可用、水平扩展
- 缺点:复杂度高、客户端支持有限
如何选择集群模式?
- 小规模:主从
- 中等规模:哨兵
- 大规模:Cluster
数据分片的原理?
- 使用哈希槽
- 通过CRC16计算
- 每个节点负责部分槽位