Redis之----理解主从复制机制

8 篇文章 0 订阅

简介

Redis的主从复制,实际上就是将一台Redis服务器的数据,复制到其他Redis的服务器。前者被称为服务器的主节点(master/leader),后者就是从节点(slave/follower),数据的复制只能由主节点到从节点,Master以写主,slave以读为主。实际上每台服务器都是一个主节点,一个主节点可以有零个或多个从节点,并且每一个从节点只能有一个主节点。主从复制,读写分离,在大部分情况下,很多人浏览网页更多的则是读操作,这是架构中常常会用到的一种模式,用来缓解读压力:
在这里插入图片描述

主从复制的作用

1、数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余的方式。
2、故障恢复:当主节点故障时,从节点可以暂时替代主节点提供服务,是一种服务冗余的方式
3、负载均衡:在主从复制的基础上,配合读写分离,由主节点进行写操作,从节点进行读操作,分担服务器的负载;尤其是在多读少写的场景下,通过多个从节点分担负载,提高并发量。
4、高可用基石:主从复制还是哨兵和集群能够实施的基础。
注意:
将Redis运用于项目中,是不会只使用一台服务器进行搭建的,因为如果是单个Redis,那么单个服务器将会独自完成来自客户端的读写操作,负载较大,而且只有一台Redis服务器,太容易挂掉了,一不小心宕掉了就很麻烦
单个服务器,内存容量是有上限的,不管这台Redis服务器的内存再怎么大,也不可能完全用来存储内存,并且单台Redis服务器的内存占用一般不会超过20个G。

为什么使用集群

1、单台服务器难以负载大量的请求。
2、单台服务器故障率高,系统崩坏概率大。
3、单台服务器内存容量有限。

集群环境搭建

查看当前库的信息:info replication
在这里插入图片描述
搭建配置,复制出三个配置文件,修改4个信息
1、搭建主从复制,不同的服务器就需要不同的端口号
2、pidfile的文件名称
3、logfile 日志文件名称
4、Redis默认RDB持久化,所以dump.rdb的名称也是需要修改的
在这里插入图片描述
编辑vim redis79.conf配置文件,作为主机使用:
在这里插入图片描述
在这里插入图片描述
编辑vim redis80.conf配置文件,作为从机使用:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
编辑vim redis81.conf配置文件,作为从机使用:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
修改完毕之后启动,如果进程存在,就表示搭建完毕。
在这里插入图片描述

一主二从

所有的Redis服务器在默认情况下都是一个主节点,在进行配置时,一般都是只需配置从机即可。
说白了就是认老大!一主(79)二从(80,81)
使用SLAVEOF host port就可以为从机配置主机了。
在这里插入图片描述
在这里插入图片描述
同样道理操作6381也认老大,那么在主机就会显示:
在这里插入图片描述
注意:
实际上,这样在命令行中的这种主从配置,只是暂时的,真正要想实现永久的主从配置,就需要在配置文件中配置,配置文件位置如下,注释去掉,然后改为相对应的配置即可:
在这里插入图片描述

使用规则

从机只能读,不能写,主机可读可写但是多用于写。
在这里插入图片描述
主机的设置值,同样会被两个从机获取到。
在这里插入图片描述在这里插入图片描述
但是作为从机在默认情况下是不能写的。
在这里插入图片描述
1、如果说在实现一主二从时,主机意外的挂掉了,那么剩下的从机在主机还没到来之前原地待命,这个时候主机掉了,就意味着失去了写操作。并且主机重新上线之后,还是保持着原来的身份,从机依旧可以获取到主机写入的信息。那怎么样才能在主机挂掉的时候产生新的主机呢?方式一、从机手动执行命令slaveof no one,这样执行以后从机会独立出来成为一个主机。方式二、使用哨兵模式(自动选举)

2、这个时候是如果是从机挂掉了,就代表这个从机已经断开连接,等待再次上线时,就不会连接原来的主机,它自己又变成了主机,但是原先的数据依旧存在,如果其再次重新连接,那么主机当中新添加的数据同样也会被共享到。

复制原理

如果一个Slave指定了一个master做老大,那么Master节点就会发送一个叫做sync的同步命令,在使用了SLAVEOF命令之后,Master接收到了,就会启动后台的存盘进程,开始收集修改数据集的命令,在存盘进程执行完毕之后,会将数据文件发送给Slave,实现一次完全同步。
这里有两种复制方式:
1、全量复制,Slave文件在接到Master发来的数据文件之后,会将其存盘并加载到内存
2、增量复制,Master和Slave已经实现同步的情况下,如果Master继续修改数据集,会将命令再次收集起来,再发送给Slave
注意:
只要是重新连接Master的服务器,在连接之后都会自动执行全量复制。我们就能在从机看到主机的全部数据!

链路模型

其实这种复制有两种模型,上面说的是一种模型(主从复制模型),还有一种类似于链路模型,线性关系的:
在这里插入图片描述
链路模型:
在实际应用场景中可以有多个节点,这样的节点具有Master和Slave的双重身份(但是实际上它还是一个Slave节点,只不过它是一个可以进行写操作的Slave节点),可以分担Redis的写压力,并且在真正的Master节点挂掉之后,这些具有双重身份的就可以顶上去工作,有效解决了一主二从的不可写问题。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咸鱼_翻身

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值