![b1e8974729fd261e25da1123009e2aa9.png](https://img-blog.csdnimg.cn/img_convert/b1e8974729fd261e25da1123009e2aa9.png)
前言
这篇开始要进入Redis集群的技术研究了,我们按照顺序会至少分四部分来介绍:主从复制、哨兵模式、Gossip协议和一致性哈希以及Redis集群。主从复制是高可用的基石,哨兵模式提供了主从架构中的自动故障恢复能力, Gossip协议和一致性哈希提供了集群中新加入节点和退出节点的发现以及节点加入或退出引起的数据重分配,最后基于上述的几个核心技术实现了高可用的Redis集群。
Redis作为一个内存数据库,使用主从架构的最核心的目的便是提供数据冗余备份,以防止一个Redis节点Down掉之后其中的数据也被丢失,而作为冗余备份,主从节点最重要的工作便是数据同步。那么本篇着重介绍的便是Redis的数据同步策略,包括主从节点首次建立连接后的全量复制以及从节点短暂断连后的数据部分复制。主要内容分为
- Redis主从复制概述
- Redis主从数据同步
- Redis读写分离实现以及过期数据处理
- 结语
Redis主从复制概述
主从复制,是指将一台Redis服务器的数据复制到其他的Redis服务器,前者称为主节点(master/leader),后者称为从节点(slave/follower)。一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点,同时每个从节点也可以是别的从节点的父节点,即主从节点连接形成树结构。
![84a52fbc849b8bbe0c141d61648388d0.png](https://img-blog.csdnimg.cn/img_convert/84a52fbc849b8bbe0c141d61648388d0.png)
主从复制的发起都是在子节点发起,当节点127.0.0.1:6380中使用salveof 127.0.0.1 6379后,6380节点与6379节点的数据复制过程如下图所示。
![b311de389b8251e02bcf2c9d79472e72.png](https://img-blog.csdnimg.cn/img_convert/b311de389b8251e02bcf2c9d79472e72.png)
主从结构中数据的复制是单向的,只能由主节点到从节点,所有的内存变更,即数据的增删改都只能在主节点上进行,从节点通过同步的方式完成修改。默认情况下,从节点对非Master节点客户端是只读的。Redis使用主从复制的作用有:
- 数据冗余:实现数据冗余备份,这样一台节点挂了之后,其上的数据不至于丢失。
- 故障恢复:当主节点出现问题时,其从节点可以被提升为主节点继续提供服务,实现快速的故障恢复;