主从复制的简单概念

Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况。为了分担读压力,Redis支持主从复制,Redis的主从结构可以采用一主多从或者级联结构,Redis主从复制可以根据是否是全量分为全量同步和增量同步。

redis主从复制流程 redis主从复制的原理_redis


主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master),后者称为从节点(slave);数据的复制是单向的,只能由主节点到从节点。

默认情况下,每台Redis服务器都是主节点;且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点

主从复制的作用

主从复制的作用主要包括:

  • 数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。
  • 故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是一种服务的冗余。
  • 负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务(即写Redis数据时应用连接主节点,读Redis数据时应用连接从节点),分担服务器负载;尤其是在写少读多的场景下,通过多个从节点分担读负载,可以大大提高Redis服务器的并发量。
  • 高可用基石:除了上述作用以外,主从复制还是哨兵和集群能够实施的基础,因此说主从复制是Redis高可用的基础。

演示主从复制

现在演示多台redis服务器,实现主从复制。
  • 配置多个redisconfig文件,来演示3个redis服务器,一主二从!
  • redis主从复制流程 redis主从复制的原理_Redis_02


  • redis主从复制流程 redis主从复制的原理_服务器_03


  • redis主从复制流程 redis主从复制的原理_redis_04


  • redis主从复制流程 redis主从复制的原理_Redis_05

  • 查看当前库的信息
  • redis主从复制流程 redis主从复制的原理_服务器_06

redis主从复制流程 redis主从复制的原理_redis_07


redis主从复制流程 redis主从复制的原理_Redis_08

  • 用命令的方式去配置一主二从!(认大佬,让端口6380和6381两台redis服务器认端口号为6379的redis服务器为主机)

这是命令的方式,这种方式在宕机或者关机后就会恢复默认,我们当然也可以使用在配置文件中修改的方式(在这里就不演示了,这里只演示命令的方式去配置)

redis主从复制流程 redis主从复制的原理_Redis_09


redis主从复制流程 redis主从复制的原理_主从复制_10

  • 去主机中修改几个数据,看从机是否能直接获取

测试:当我们这时候主机宕机了,这时候会发生什么?从机会怎么应对?

  • 演示注解6379端口的redis服务器宕机了。。。

redis主从复制流程 redis主从复制的原理_redis_11

  • 这时候,从机依旧可以读取到主机有的数据,说明主从复制同步数据成功,但是这时候的从机依旧是从机,无法去写数据,必须去手动配置成主机。

redis主从复制流程 redis主从复制的原理_redis_12

  • 这时候,主机如果重新恢复了,从机依旧可以读取到主机写的数据。(增量复制

测试:当我们从机有一个宕机了,会发什么什么?

  • 我们演示6381端口的从机宕机,然后重新连接恢复,会发现从机又变回了默认的主机。

redis主从复制流程 redis主从复制的原理_Redis_13

  • 又把它变成6379端口redis服务器的从机,会发现,可以直接读取到之前主机的所有数据。(全量复制

全量复制:用于初次复制或其他无法进行部分复制的情况,将主节点中的所有数据都发送给从节点,是一个非常重型的操作。
部分复制:用于网络中断等情况后的复制,只将中断期间主节点执行的写命令发送给从节点,与全量复制相比更加高效。需要注意的是,如果网络中断时间过长,导致主节点没有能够完整地保存中断期间执行的写命令,则无法进行部分复制,仍使用全量复制。