Redis集群
Redis集群
Redis集群是一个提供在多个Redis节点之间共享数据的程序集。
Redis集群的优势:
- 自动分割数据到不同的节点上
- 当部分节点挂掉或者不可达,集群仍然可以继续工作
Redis集群不支持处理多个keys的命令,因为这需要在不同节点间移动数据,从而达不到像Redis那样的高性能,在高负载的情况下可能会导致不可预料的错误。
Redis集群的数据分片
Redis集群没有使用一致性的哈希,而是引入哈希槽(hash slot)的概念。
Redis集群有16384个哈希槽,每个key通过CRC16校验后对16384取模来决定放置到哪个槽。集群的每个节点负责一部分hash槽。这种结构很容易添加或者删除节点。
Redis集群的主从复制模型
为了使部分节点失败或者大部分节点无法通信的情况下集群仍然可用,所以集群使用了主从复制模型,每个节点都会有N-1个复制品。
Redis集群会把数据存在一个master节点上,然后这个master和其对应的slave之间进行数据同步。当读取数据时,根据一致性哈希到对应的master节点获取数据。只有当一个master挂掉之后,才会启动一个对应的slave充当master。
当主从都失败后,集群就不可用了。
Redis一致性保证
Redis并不能保证数据的强一致性。第一个原因是因为集群用了异步复制。在写操作过程中:
- 客户端向主节点B写入一条命令
- 主节点B向客户端回复命令
- 主节点B将写操作复制给从节点B1、B2、B3
目前Redis支持的cluster特性
- 节点自动发现
- slave->master选举,集群容错
- Hot resharding:在线分片
- 进群管理
- 基于配置的集群管理

浙公网安备 33010602011771号