学习Redis之前,我还是觉得我务必跟你说一声,也是在我文章之中说的很多的一句话,我想也会适用于学习Redis,那就是在接触文章里的Reids命令时,不用试图去记这些命令 ,用到时去看API帮助文档即可;会用了或者实践过了再去了解也不会迟。
上手Redis系列
上手Redis系列(一):超全String字符串类型详解
上手Redis系列(二):超全List列表类型详解(代码图文示例)
上手Redis系列(三):超全集合Set类型详解(代码图文示例)
上手Redis系列(四):超全哈希Hash类型详解(代码图文示例)
上手Redis系列(五):超全有序集合Zset类型详解
上手Redis系列(六):超全Geospatial特殊类型详解(地理位置)
上手Redis系列(七):超全HyperLogLog特殊类型详解
上手Redis系列(八):Bitmaps特殊类型详解
上手Redis系列(九):事务操作
进阶Redis系列(十):超全详解Redis持久化机制RDB
进阶Redis系列(十一):超全详解Redis持久化机制AOF
进阶Redis系列(十二):超全详解Redis发布与订阅
一、什么是Reids主从复制?
主从复制,是指Redis服务器数据,复制到其他Redis服务器。
前者为主节点 master,后者为从节点 slave (可以用关键 info replication 查看);数据复制是单向,只能从主节点到从节点。
主从复制,其实就是将读写分离,因为你会发现,其实我们绝大数情况下都是在进行读的操作。
在默认情况下,每台Redis服务器都是主节点;且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。
二、为什么要使用Reids的主从复制?
在我们真实开发上线只使用一台Redis是远远不够的。
1.因为单个Redis服务器会发生单点故障,且只有一台服务器需要处理所有请求负载,所以压力大。
2.从单个Redis服务器内存容量有限,单单一台Redis服务器内存容量为256G,并不能将所有内存用作Redis存储内存,单台Redis最大使用内存不超过20G
应用场景可以是多读少写的情况。
三、实践使用主从复制
2.1配置环境
主从复制的作用:
1.数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。
2.故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是一种服务的冗余。
3.负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务(即写Redis数据时应用连接主节点,读Redis数据时应用连接从节点),分担服务器负载;尤其是在写少读多的场景下,通过多个从节点分担读负载,可以大大提高Redis服务器的并发量。
4.高可用基石:除了上述作用以外,主从复制还是哨兵和集群能够实施的基础,因此说主从复制是Redis高可用的基础。
2.2实践主从复制
需要复制reids.conf为3个,分别是redis80.conf、redis81.conf、redis82.conf配置文件
然后修改3个配置文件对应的信息
- port端口
- pid 名字
- log 文件
- dump.rdb文件
port的具体位置
pidfile的具体位置
logfile的具体位置
dbfilename的具体位置
查看进程信息
ps -ef|grep redis
可以发现三个服务已经启动
查看当前主从复制的信息。
info replication
会发现三个都会是master,也就是主机。
命令配置主从设置
进入想要从机连接主机。
这里用的是6381连接6380
SLAVEOF host port
SLAVEOF 后选择要连接的主机。
这里6381和6382从机都连接6380主机。
查看6380主机主从信息。
可以看到从connected_slaves为0到数量为2。
虽然命令可以配置主从,但只是暂时的。在真实开发中还是需要在配置文件中设置。(下面会有在文件设置主从复制)
四、深入主从复制细节
配置好我们的环境就可以来深入探究我们主从复制的细节了。
Redis主机可以写,从机不能写只能读!(下面验证)主机中的所有信息和数据,会自动被从机保持!
主机中添加值。
从机添加发现报错提示,只能读!
从机不可以写,但是是可以直接读到主机的值的。
所以我们再把上面图拿过来加深印象。
主从复制中,如果主机断开连接,从机依然连接着主机,依然可以获取到值,但很明显主机没有写操作;一旦主机回来,从机依然获取到主机信息。
我们来实践一下。
主机退出
查看进程信息,可以看到主机已经没有了。
再次启动主机后添加值。
从机依旧可以获取到值。
但是但是一旦从机 SHUTDOWN ,那么如果是用命令行配置的主从配置,从机会直接变成原来的主机。
退出从机
查看主从复制信息可以发现6381从从机变回主机。
如果再次6380主机变回从机看是否能获取到数据。
发现只要是再次连接上也是可以的。
五、主从复制原理。
Slave启动成功连接到master后会发送同步命令。
Master 接到命令,启动后台的存盘进程,同时收集所有接收到的用于数据集命令,在后台进程执行完后,Master
将传送整个数据文件到slave完成一次完全同步。
全量复制:Redis全量复制一般发生在Slave的初始化阶段,这时Slave需要将Master上的所有数据都复制一份。
增量复制:Redis增量复制是指Slave初始化后开始正常工作时主服务器发生的写操作同步到从服务器的过程。
换句话说,全量复制和增量复制是相互联系的,主机和从机在开始连接初始化需要全量复制,后续主机和从机在连接保持状态下都是增量复制。
最后
最后的最后,为了更好的阅读体验,我把想说的话都放在了下面,嘿嘿。
我是一颗剽悍的种子 把我会的,认真的分享 是我写博客一直不变的信条。
如果你能看到这篇博文,说明咱们还是很有缘的;希望能带给你一些许帮助,创作的不易, 把我文章的知识带走,你的三连留下,点赞,评论,关注,是我最大的动力。