redis中的持久化方式

本文详细介绍了Redis的两种持久化方式:RDB(快照)和AOF。RDB通过创建数据快照实现持久化,但可能丢失部分更新;AOF记录所有操作命令,恢复时重新执行,保证数据完整性。在配置中,RDB可设置快照频率、压缩等选项,AOF则涉及开启、文件名、重写策略等。当两者都开启时,Redis优先使用AOF。AOF在rewrite过程中可能存在阻塞问题。

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

redis中的持久化方式

1.RDB(快照)

1.原理
redis使用操作系统的多进程机制来实现快照持久化,redis在持久化时,会调用glibc函数,fork一个子进程,然后将持久化操作完全交给子进程去处理,而父进程则继续处理客户端的请求,在这个过程中,子进程只能看到它自己产生的那一瞬间内存中的数据,这也是为什么叫做快照!

2.配置
1)在redis中,快照的持久化方式默认是开启的,默认情况下会产生一个dump.rdb文件,这个文件就是备份下来的文件,当redis启动时,其会默认加载这个dump.rdb文件,来恢复数据

2)具体的配置在redis.conf中
2.1)快照的频率,这里第一行表示3600秒内,有一个键被修改,则进行快照
在这里插入图片描述

2.2)快照执行出错后,是否继续处理客户端的写命令
在这里插入图片描述
2.3)是否对快照文件进行压缩
在这里插入图片描述
2.4)配置快照文件名
在这里插入图片描述

2.5)配置快照文件的所在目录,默认当前目录
在这里插入图片描述

3.备份流程
1)在redis运行期间,我们可以向redis发送save命令来创建一个快照,但是,save是一个阻塞命令,所以redis在接收到save命令时在备份数据的时候,不会再处理其他的请求,其他的命令会进入到阻塞状态,所以save不推荐使用

2)我们一般使用bgsave(后台处理)命令,bgsave会fork一个子进程来进行备份数据的操作,父进程可以继续处理其他的请求

3)我们在refdis.conf中配置的备份规则,如 save 100 2,如果规则满足,也会自动触发bgsave命令

4)当我们执行shutdown关闭redis服务时,其实调用了save命令,在关闭掉redis服务之前,会先进行备份数据

5)用redis搭建主从复制时,在从机连上主机后,从机会自动向主机发送sync同步命令,主机接收到命令后,会执行bgsave命令对数据进行快照,进行备份,才会将快照中的最新数据同步到从机

2.AOF

1.原理
AOF是将redis上执行的命令追加到AOF文件末尾,在恢复时,只需要把记录下来的命令重新重头头尾执行一遍既可,默认情况下,AOF是不开启的,需要我们去手动开启

2.AOF的配置,在redis.conf中
1)开启AOF
注意:
先将rdb快照的配置关闭
在这里插入图片描述
再开启AOF
在这里插入图片描述

2)配置AOF文件名
在这里插入图片描述
3)备份的时机,如下代表每秒备份一次
在这里插入图片描述
4)表示AOF文件在压缩时,是否继续同步操作
在这里插入图片描述

5)表示当前AOF文件大小超过上次重写的AOF文件的百分之多少时,进行重写
在这里插入图片描述
6)如果之前没有重写过,则以启动时AOF文件的大小为依据,同时要求AOF文件大小为64M
在这里插入图片描述
7)开启AOF配置后,重启redis,可以看到生成了一个AOF文件
在这里插入图片描述
8)我们也可以输入命令,手动开启AOF的备份
在这里插入图片描述

3.两者的区别

1.如果两者都开启了配置,那么redis会默认使用AOF的方式来备份数据
2.rdb文件保存的数据有可能会丢失,不够完整,而aof文件保存的数据是完整的
3.AOF方式在rewrite的过程中,避免不了阻塞问题,有可能出现多次IO,出现性能问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值