文章目录
- Redis的RDB持久化配置以及数据恢复
- 配置RDB持久化机制
- RDB持久化机制的工作流程
- 基于RDB持久化机制的数据恢复
Redis的RDB持久化配置以及数据恢复
配置RDB持久化机制
在 redis 的配置文件中找到如下内容:
以 save 60 10000 为例,表示每隔 60s,如果有超过10000 个 key 发生了变更,那么就生成一个新的 dump.rdb 文件,就是当前 redis 内存中完整的数据快照,这个操作也被称之为 snapshotting。
另外,快照也可以手动调用 save 或者 bgsave 命令,同步或异步执行 rdb 快照生成。
save 可以设置多个,就是多个 snapshotting 检查点,每到一个检查点,就会去 check 是否有指定的 key 数量发生了变更,如果有,就生成一个新的 dump.rdb 文件。
RDB持久化机制的工作流程
- redis 根据配置自己尝试去生成 rdb 快照文件;
- fork 一个子进程出来;
- 子进程尝试将数据 dump 到临时的 rdb 快照文件中;
- 完成 rdb 快照文件的生成之后,就替换之前的旧的快照文件。
基于RDB持久化机制的数据恢复
场景一:在 redis 中保存几条数据,使用 redis-cli shutdown 命令 关闭 redis 进程,然后重启 redis。
由上图可知,由 redis-cli shutdown 关闭 redis 进程,数据不会丢失。这是因为通过 redis-cli shutdown 这种方式去 redis 进程,其实是一种安全退出的模式,redis 在退出的时候会将内存中的数据立即生成一份完整的 rdb 快照。
场景二:在 redis 中再保存几条新的数据,用 kill -9 粗暴杀死 redis 进程,模拟 redis 故障异常退出,导致内存数据丢失的场景