redis有哪些集群模式

redis有哪些集群模式
最新回答
爷傲灬奈我何

2023-12-03 00:00:04

Redis的集群模式主要有以下五种

主从复制(Master-Slave Replication)
主从复制通过Slave节点主动发送SYNC命令实现数据同步。Master收到命令后,后台执行持久化并收集所有修改命令,完成后将完整数据库文件发送至Slave。Slave存盘加载后,Master持续推送新命令以保持同步。若连接中断,重连后会自动触发全量同步。配置时需在Slave节点设置slaveof masterip masterport,若启用密码验证还需配置masterauth master-password。该模式无法水平扩容,且高可用性受Master内存限制。

哨兵模式(Sentinel)
哨兵模式自Redis 2.8版本稳定后,通过独立进程监控集群状态。其核心功能包括:

  1. 监控:每秒向Master、Slave及其他Sentinel发送PING命令,检测节点存活状态。
  2. 通知:通过API向管理员或应用发送故障警报。
  3. 自动故障迁移:当Master被标记为客观下线(ODOWN)时,Sentinel会选举新Master(通常为Slave节点),并更新集群配置文件(如原Master的redis.conf新增slaveof配置,Sentinel的监控目标调整)。
    该模式仍受Master内存限制,且扩容需手动调整节点。

Redis Cluster集群模式
Redis Cluster是官方提供的服务端分片技术(3.0版本正式支持),采用无中心架构,所有节点互联。数据分片基于哈希槽(slot),共16384个槽位。客户端访问时,Redis通过CRC16算法计算key的哈希值,并对16384取模,定位到对应槽位所在的节点。该模式支持自动故障转移和水平扩容,但需客户端兼容集群协议。

Jedis Sharding集群(客户端分片)
Jedis Sharding通过客户端实现分片,采用一致性哈希算法(MURMUR_HASH)将key映射到节点。为减少节点增减时的数据迁移,每个物理节点虚拟化为160个虚拟节点(可按权重调整)。此外,支持keyTagPattern模式,允许通过key的部分字段(如用户ID)将关联数据分配到同一节点,避免跨节点访问。该模式在Redis Cluster出现前广泛使用,但扩容仍需重启客户端。

中间件代理模式
通过代理层(如Twemproxy、Codis、Nginx)实现分片。代理接收客户端请求后,根据key计算哈希值并路由至对应Redis节点。例如,Codis将数据分散到多个Redis组,每组包含Master和Slave,支持动态扩容和故障转移。该模式解耦了客户端与集群,但代理可能成为性能瓶颈。