- 主从复制:
在master执行完修改数据集的命令后会将已经收到的修改命令和新的修改命令依次传送给slaves,slaves将在本次执行这些数据修改命令,从而达到最终的数据同步
优点:1)分载master的读压力,slave可以为客户端提供只读操作
2)master server是以非阻塞的方式为slave提供服务的。在master-slave同步时,客户端仍然可以提交查询或者修改请求
3)同一个master可以同步多个slave,一个slave可以接受其他slave的连接和同步请求
缺点:1) 主机从机的宕机都会导致前端部分读写请求失败,需要等待机器重启或者手动切换前端的IP才能恢复。
2) 主机宕机,宕机前有部分数据未能及时同步到从机,切换IP后还会引入数据不一致的问题,降低了系统的可用性
3) 较难支持在线扩容(不能水平扩容,并且这两个模式的高可用特性都会受到Master主节点内存的限制)
2.哨兵模式:
哨兵是为了监测master状态的,如果master服务器故障,可以将master和slave进行切换,实现高可用性
优点:1)主从可以切换,故障可以转移
2)哨兵模式是主从模式的升级,可用性更高
缺点:很难在线扩容,高可用性会受到master主节点内存的限制
3.集群模式
投票过程中所有master参与,如果半数以上master节点与master节点通信超时,就认为当前master节点挂掉了
redis的集群模式思想之给每个master节点分配一定数量的slot(共16384个),set数据的时候,根据CRC16(key) mode 16384计算出分配到哪个slot,在高并发下将数据读写分散到不同的master到达分布式的效果
计算公式:slot = CRC16(key)%16383。每一个节点负责维护一部分槽以及槽所映射的键值数据。