概念
Redis通过多个节点存储冗余或者分片数据,可具备读写分离、故障转移、数据备份等能力,实现高性能、高可用
主从复制模式
原理:
1、主节点负责处理写请求 2、从节点负责分摊处理读请求 3、从节点同步主节点写入的数据 4、主节点发生故障时,需要手动切换其他从节点代替主节点
优点:
1、实现了读写分离,提升了读的性能 2、实现了数据冗余,有一定容灾能力,提高了数据可用性 3、配置简单
缺点:
1、无法实现自动故障转移 2、无法实现数据分片,数据可存储量受单节点内存限制 3、写请求只由一个主节点处理,写请求没有被分摊,写性能没有很大提升
实践:
todo

哨兵模式
原理:
1、在主从复制基础上,增加哨兵节点,监控主从节点运行情况;当主节点发生故障时,及时自动触发故障转移,将其他从节点切换为主节点
优点:
1、具备主从复制模式优点的同时,还支持实现主节点的自动故障转移
缺点:
1、无法实现数据分片,数据可存储量受单节点内存限制 2、写请求只由一个主节点处理,写请求没有被分摊,写性能没有很大提升 3、配置相对复杂
实践:
todo

Cluster模式
原理:
1、数据分片后,数据分摊存储在集群中的各个主节点中,其中每个主节点都至少有一个从节点,并且从节点备份主节点数据以及可以分摊读请求(默认主节点处理读写请求) 2、读写请求进来,使用CRC16算法对key计算哈希值,然后对16384取模得到需要路由处理的主节点槽位编号,然后由对应编号的主节点处理请求 3、集群中的所有节点,都会周期性的向其他节点发送心跳,当超过一定时间没有收到某个主节点心跳,集群会将其从节点升级为主节点,完成自动故障转移(所以哨兵不是必须的)
优点:
1、实现数据冗余和数据分片,提升数据存储和容灾能力 2、实现主节点自动故障转移(可不借助哨兵) 3、读写请求分摊到多个节点,实现了负载均衡,提升了性能 4、可实现读写分离
缺点:
1、配置复杂 2、不支持对跨节点的多个键进行操作,比如mget、mset命令 3、单个键值对最大的存储数据量有限制
实践:
todo
