13. Redis 主从复制介绍
Redis主从复制是Redis内置的一种数据冗余和备份方式,同时也是分发读查询负载的一种方法。通过主从复制,可以有多个从服务器(Slave)复制一个主服务器(Master)的数据。在这个系统中,数据的复制是单向的,只能由主服务器(Master)到从服务
器(Slave)。
重点:主节点可读写
I
从节点:只能读
主从复制,读写分离!几乎百分之80情况下都是读的操作,所以多从节点才能减缓服务器压力。
为什么要有主从复制
几乎所有运用了Redis的软件中,都不可能只用一台Redis:
1、结构上,单个Redis服务器可能会出现单点故障,并且一台服务器处理所有请求,负载压力较大
2、容量上,单个Redis服务器内存容量有限,就算服务器内存很大也不可能全部用于Redis,一般来说单台Redis服务器内存最大
不超过20G
主从复制的主要作用
1、数据冗余:主从复制实现了数据的热备份,是持久化的一种数据冗余方式
2、故障恢复:主节点一旦出现问题,可以由从节点提供服务,避免出现程序不可用的情况,实现快速故障恢复。
3、负载均衡:在主从复制的基础之上,配合读写分离,主节点提供写服务,由从节点提供读服务,分担服务器负载,尤其是在读
多写少场景下,可以大大提高Redis并发量
4、高可用(集群)基石:主从复制是集群和哨兵模式的基础。
主从复制搭建
- 主从复制最基本的也需要1主2从
 - 默认情况下,每台Redis服务器都是主节点
 - 一个主节点可以有多个从节点,但是一个从节点只能有一个主节点
 


在redis里面通过SLAVEOF 命令来配置主机
命令方式是临时的;关机关服务就没了
注意:
1、主机可以写,从机不可以
2、主机如果宕机,重新连接以后,依旧可以成功连接
3、 从机也可以作为主机、但依然不可写(这种就称为链路模式的)
原理总结
1、Slave启动成功连接到Master后会发送一个sync(同步)命令
2、 Master收到命令以后,会启动后台存盘进程,同时收集所有修改命令
3、后台存盘线程执行完毕之后,会将Master整体数据全量复制到slave中,完成第一次同步
全量复制:将Master中所有数据进行保存传输到Slave中
增量复制:Master后续新增的修改命令会以此传给Slave,完成同步
注意:如果有Slave断开,一旦重新连接就会触发全量复制