Redis的持久化方式和主从关系搭建 Day02

本文介绍Redis的两种持久化方式:RDB快照和AOF日志追加,对比其优缺点,并讲解如何搭建Redis主从关系,实现读写分离。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. Redis的持久化方式

持久化:把内存中的数据库保存到磁盘上。防止数据的丢失。
redis支持的持久化方式两种:
(1)RDB:快照,其实就是把数据以快照的形式保存在磁盘上,什么是快照呢,你可以理解成把当前时刻的数据拍成一张照片保存下来。
(2)AOF:日志追加,记录服务器接受的每个写入操作,当服务器启动时再次加载该日志,会把日志中的命令重新执行一遍。

2. RDB快照持久化方式

2.1 如何触发RDB持久化

  1. 手动save命令
save
  1. 手动bgsave命令

  2. 通过配置自动触发

2.1.1 save和bgsave区别

该命令会阻塞当前Redis服务器,执行save命令期间,Redis不能处理其他命令,直到RDB过程完成为止。具体流程如下:
在这里插入图片描述
save命令:
①save使用:在Redis命令行中输入save持久化命令,可以在Redis的bin文件夹中发现一个dump.rdb文件。
②如果想更改Redis的数据备份文件生成位置,可以通过修改配置文件实现。
在这里插入图片描述
③如何测试备份文件是否真的备份了呢?我们可以在备份完成后,清空Redis数据库并关闭Redis数据库,当我们再次使用redis -server redis.conf以及redis-cli命令启动Redis时,我们会发现Redis自动读取了数据库备份文件,此时证明我们备份成功!

④但是,每次save命令执行完成后如果存在老的RDB文件,就把出现新的RDB文件替换旧的RDB文件的情况。如果我们的客户端数据是几万或者是几十万,那么这种方式显然不可取的。

bgsave命令:
执行该命令时,Redis会在后台异步进行快照操作,快照同时还可以响应客户端请求。具体流程如下:
在这里插入图片描述
bgsave自动触发具体流程:
①修改redis.conf配置文件。
在这里插入图片描述
这里的save 30 1:指的是每30秒内,如果发生一次修改就进行bgsave。
这里可以任意修改数值。
②添加数据,测试是否会自动生成RDB文件,例如这里修改的save 30 1,对Redis数据库修改过一次后,等候30秒,去查看Redis的数据备份文件目录,如果出现了dump.rdb,那么恭喜你,备份成功!

2.2 恢复数据

只需要把dump.rdb文件放入redis的安装目录即可,redis再次启动时回加载安装目录下的dump.rdb文件。

2.3 RDB的优缺点

优点:
(1)RDB文件紧凑,全量备份,非常适合用于进行备份和灾难恢复。
(2)生成RDB文件的时候,redis主进程会fork()一个子进程来处理所有保存工作,主进程不需要进行任何磁盘IO操作。
(3)RDB 在恢复大数据集时的速度比 AOF 的恢复速度要快。
缺点:
快照持久化期间修改的数据不会被保存,可能丢失数据。数据完整性比较差。

3. AOF 日志追加持久化方式

3.1 什么是AOF

提供一种更加高效的方式AOF,工作机制很简单,redis会将每一个收到的写命令都通过write函数追加到文件中。通俗的理解就是日志记录。

在这里插入图片描述

3.2 AOF的触发模式

3.2.1 具体流程

①先修改redis.conf配置文件,将appendonly no修改成yes
在这里插入图片描述
②开启第一个,把第二个注释掉。
在这里插入图片描述

3.3 AOF的优缺点

优点:

(1)AOF可以更好的保护数据不丢失,一般AOF会每隔1秒,通过一个后台线程执行一次fsync操作,最多丢失1秒钟的数据。
(2)AOF日志文件没有任何磁盘寻址的开销,写入性能非常高,文件不容易破损。
(3)AOF日志文件即使过大的时候,出现后台重写操作,也不会影响客户端的读写。

缺点:

(1)对于同一份数据来说,AOF日志文件通常比RDB数据快照文件更大.
(2)恢复数据时时间要比快照模式慢很多。

4. Redis主从关系搭建

4.1 什么是Redis主从关系

不管任何程序,只运行一个实例都是不可靠的,一旦因为网络原因导致所在机器不可达,或者所在服务器挂掉,那么这个程序将不能对外提供服务了,Redis也是一样的。同时,将数据完全存储在单个redis中也会存在数据备份和数据量较大造成性能降低的问题。主从模式很好的解决了数据备份问题,并且由于主从服务数据几乎是一致的,因而可以将写入数据的命令发送给主机执行,而读取数据的命令发送给不同的从机执行,从而达到读写分离的目的。

4.2 Redis主从关系配置

①创建文件夹并在文件夹里面复制三个redis.conf配置文件
这三个配置文件复制的是redis.conf,并修改名字为redis7001.conf、redis7002.conf和redis7003.conf,这里可以修改成任意名字,但是建议命名为开启端口号一样的名字,便于区分。

mkdir three-redis
cp redis.conf redis7001.conf
cp redis.conf redis7002.conf
cp redis.conf redis7003.conf
mv redis7001.conf /usr/local/bin/three-redis/
mv redis7002.conf /usr/local/bin/three-redis/
mv redis7003![在这里插入图片描述](https://img-blog.csdnimg.cn/20210426003435236.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDIzMzI1Mw==,size_16,color_FFFFFF,t_70)
.conf /usr/local/bin/three-redis/

②修改这三个配置文件
将这三个配置文件中的端口号prot分别改为7001、7002、7003
关闭AOF配置,将appendonly修改成no
在这里插入图片描述
③分别根据三个conf文件启动三个不同的Redis数据库,配置主从关
首先,使用info replication查看三台Redis数据库的信息,发现都是Master
在这里插入图片描述
然后,在7002和7003Redis数据库中使用命令

slaveof 127.0.0.1 7001

此时,我们再次使用info replication查看三台Redis数据库的信息,发现只有7000是Master,其余两台均为Slave。

在这里插入图片描述
总结:
经过对三台Redis数据库的读写测试,我们可以很轻易的得知,Redis中主节点负责写,并把写的内容同步到从节点上。 从节点只能负责读操作,不能进行写操作。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值