主从模式
主从架构图
主从模式就是一个redis实例作为主节点,其他redis实例作为从节点,从节点会将主节点的数据同步过来。利用这个模式可以做读写分离,主节点可读可写,从节点只读,降低单节点情况的压力。
优点
- 主从同步可以实现备份数据的作用,降低数据丢失的风险
- 读写分离,提高查询效率
- 某个节点挂掉时,其他节点依然可以对外提供服务
缺点
- 每个节点都是全量数据,内存利用率低,浪费资源
- 主节点挂掉时,有可能导致主从数据不一致
- 主节点挂掉后,虽然从节点可继续查询,但是主节点不能提供写入服务
- 主节点挂掉后需要人工介入
- 写入压力在一个节点
哨兵模式
哨兵模式架构图
哨兵模式是在主从模式的基础上,增加了由一个或多个哨兵组成的哨兵集群来监视主从模式的运行状态,解决主节点挂掉时无法继续对外提供写入服务的问题。一般会用奇数个哨兵节点,因为每个哨兵都会监视集群中节点的状态,如果主节点挂掉了,哨兵会进行投票,将某个从节点提升为主节点接续对外提供服务,从而达到高可用。客户端连接哨兵,哨兵对外提供redis服务地址的发现。
优点
- 实现了高可用,部分节点挂掉依然能对外提供全部服务
- 出现问题,自动切换,无需人工介入
缺点
- 依然存在内存利用率不高,每个节点都是全量数据的问题
- 部署相对复杂,节点较多,不确定性增加
- 写入压力依然集中在一个节点
分片集群
分片集群架构图
有多个主从模式组成集群,当主节点挂掉是,从节点会提升为主节点,且数据是分片保存在不同的主从集群里,分片的规则是整个数据库将会被分为16384个哈希槽,数据库中的每个键都属于这16384个槽中的其中一个,集群中的每个节点可以处0个或者最多16384个槽。
优点
- 写入操作会被分配到不同的节点,提高了写入效率
- 数据是分片保存到了不同的主从节点,内存利用率较高,扩展性好
- 高可用,除非其中一个主从集群的节点都挂掉,否则任何一个节点挂掉都能继续对外提供服务
缺点
暂时没想到