Redis持久化之RDB和AOF

RDB是Redis的数据集时间点快照,通过bgsave命令非阻塞地创建。AOF记录所有写操作,保证数据完整性,可以通过always、everysec、no策略写回。AOF重写用于优化文件大小,当达到一定比例或大小时触发。Redis支持同时使用RDB和AOF,恢复时优先使用AOF。

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

什么是RDB?

在指定的时间间隔执行数据集的时间点快照,把某一时刻的数据和状态以文件的形式写到磁盘上这个文件就称为rdb文件(dump.rdb)

RDB自动触发

进入配置文件进行以下修改

1,更改rdb自动触发条件 434行设置间隔10秒钟且有一条更改记录则自动触发

 426 # Unless specified otherwise, by default Redis will save the DB:
 
427 #   * After 3600 seconds (an hour) if at least 1 change was performed
 
428 #   * After 300 seconds (5 minutes) if at least 100 changes were performed
 429 #   * After 60 seconds if at least 10000 changes were performed
 
430 #
 431 # You can set these explicitly by uncommenting the following line.
 432 #
 433 # save 3600 1 300 100 60 10000
 434 save 10 1

2,设置rdb文件名称

 480 # The filename where to dump the DB
 481 dbfilename dump6379.rdb

3,设置rdb文件存放目录

 503 # Note that you must specify a directory here, not a file name.
 504 dir /myredis/dumpfiles

我们在进行如下命令操作时也会生成rdb文件:shutdown,flushdb,flushall 但是这个文件是空的没有什么意义。因此我们要在不同的设备上备份rdb文件

 RDB手动触发

1,save 命令 这个种方式会造成阻塞使redis无法完成正常的缓存功能在生产环境中禁用

2,bgsave命令 会在系统中开辟子线程用于生成rdb文件不影响redis的功能 这也是系统默认的命令

 RDB文件修复

redis-check-rdb rdb文件绝对路径

如何禁用RDB

1,将第424行的注释取消掉将会永久禁用掉rdb

 421 # Snapshotting can be completely disabled with a single empty string argument
 422 # as in following example:
 423 #
 424 # save ""

2,redis-cli config set save "" 这个命令只会暂时禁用掉rdb

什么是AOF?

AOF(append-only file):以日志的形式来记录每一个写操作 只允许追加文件不可以改写文件

在redis启动之初会将文件中的命令从上到下执行一遍完成数据恢复的工作

AOF是对RDB的一种补充有效防止了我们在写入时突然的服务器宕机造成的数据缺失问题

AOF怎么开启

在配置文件中将 1379 appendonly no 的no改为yes

AOF的写回策略

我们所执行的增删改操作命令并不会直接存到AOF文件中而是更具写回策略而定

 Always 同步写回没执行一个增删改操作便将命令写到文件中

everysec 先将命令写到AOF缓存区间隔一秒后将命令写道文件中

no 由操作系统控制的写回,所有命令全部存到AOF缓存区由操作系统决定何时写回到文件中

AOF文件的保存 

aof文件有三个文件组成

appendonly.aof.1.base.rdb
appendonly.aof.1.incr.aof(这个文件是用来记录操作命令的)
appendonly.aof.manifest

aof文件异常受损恢复命令

redis-check-aof --fix appendonly.aof.1.incr.aof

AOF重写机制

Specify a percentage of zero in order to disable the automatic AOF
# rewrite feature.

auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

aof的默认重写机制是当 当前文件大小是之前的一倍并且达到了64MB则会自动触发重写机制

此时appendonly.aof.1.incr.aof文件中的指令以最小指令集的形式放到appendonly.aof.2.base.rdb文件中并且生成一个新的appendonly.aof.2.incr.aof文件

手动重写命令:bgrewriteaof

AOF+RDB 

redis支持aof和rdb同时使用并且在数据恢复时优先开始读取aof文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值