总体介绍
- 持久化双雄:
- RDB(Redis DataBase):RDB 是 Redis 默认的持久化方式,它通过生成数据集的快照(snapshot)来保存数据。RDB 文件是一个经过压缩的二进制文件,包含了某个时间点 Redis 数据库中的所有数据。
- AOF(Append-Only File):AOF 持久化通过记录每个写操作来保存数据。AOF 文件是一个追加写入的日志文件,记录了 Redis 执行的所有写命令。在 Redis 重启时,可以通过重新执行 AOF 文件中的命令来恢复数据。
RDB(Redis DataBase)
官网介绍
- RDB (Redis 数据库):RDB 持久化以指定的时间间隔执行数据集的时间点快照。
- 在指定的时间间隔,执行数据集的时间点快照。
- 实现类似照片记录效果的方式,就是把某一时刻的数据和状态以文件的形式写到磁盘上,也就是快照。这样一来即使故障宕机,快照文件也不会丢失,数据的可靠性也就得到了保证。
- 这个快照文件就称为 RDB 文件(dump.rdb),其中,RDB 就是 Redis DataBase 的缩写。
- 在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话讲的 snapshot 内存快照,它恢复时再将硬盘快照文件直接读回到内存里。
- Redis 的数据都在内存中,保存备份时它执行的是全量快照,也就是说,把内存中的所有数据都记录到磁盘中,一锅端。
- RDB 保存的是 dump.rdb 文件。
案例演示
RDB 保存到磁盘的文件叫 dump.rdb
Redis 6.0.16 及以下:
- Redis 6.2 以及 Redis 7.0.0:
- 操作步骤:
- 自动触发:
- Redis7 版本,按照 redis.conf 里配置的
save <seconds> <changes>
- 本次案例5秒2次修改,
save 5 2
的意思是,如果在 5 秒内发生了 2 次写操作(如 SET 或 DEL),则会触发 RDB 保存。在 5 秒内发生至少 2 次修改,就会触发保存快照。如果在 5 秒内发生了 3 次修改,它满足了这个条件,因此快照会被保存。即使超过了 2 次修改,只要满足时间窗口和修改次数的条件(这里是 5 秒内 2 次修改),快照就会触发。
- 修改 dump.rdb 文件的保存路径
- 修改 dump.rdb 文件名称
- 触发备份
- 第一种情况,5 秒内保存 2 次
- 第二种情况,两次保存间隔超过5秒
Redis 启动或者 RDB 快照完成,开始计时,期间 Redis 会记录发生写操作的次数。超过了
<seconds>
后,Redis 会统计这段时间里达到修改次数,满足<changes>
次,会自动触发,每个时间间隔内只会触发一次我看推测配置文件注释描述的应该是距离上次更新超过了
<seconds>
后,Redis 会统计这段时间里达到修改次数,如果满足<changes>
次数,会自动触发如何恢复:
- 将备份文件(dump.rdb)移动到 Redis 安装目录并启动服务即可
- shutdown 命令模拟服务器宕机时,最后那次关机 redis 马上会把当前的快照保存一次,保证跟上一次一致,尽量使其最新
- 备份成功后故意用
flushdb
清空 redis,看看是否可以恢复数据?执行flushall/flushdb
命令也会产生 dump.rdb 文件,但里面是空的,无意义 - 物理恢复,一定要将服务产生的有数据的 RDB 文件备份一份,然后分机隔离,避免生产上物理损坏后备份文件也挂了
手动触发: