
- Redis目前已经成为主流的内存数据库了,但是大部分人仅仅是停留在会用的阶段,你真的了解Redis内部的工作原理吗?
- 今天这篇文章将为大家介绍Redis持久化的两种方案,文章将会从以下五个方面介绍:
- 什么是RDB,RDB如何实现持久化?
- 什么是AOF,AOF如何实现持久化?
- AOF和RDB的区别。
- 如何重启恢复数据?
- 持久化性能问题和解决方案

RDB
- RDB持久化是把当前进程数据生成快照保存到硬盘的过程, 触发RDB持久化过程分为手动触发和自动触发。
- RDB完成后会自动生成一个文件,保存在
dir
配置的指定目录下,文件名是dbfileName
指定。 - Redis默认会采用LZF算法对生成的RDB文件做压缩处理,压缩后的文件远远小于内存大小,默认开启。
手动触发
- 手动触发的命令有
save
和bgsave
。 save
:该命令会阻塞Redis服务器,直到RDB的过程完成,已经被废弃,因此线上不建议使用。bgsave
:每次进行RDB过程都会fork一个子进程,由子进程完成RDB的操作,因此阻塞只会发生在fork阶段,一般时间很短。
自动触发
- 除了手动触发RDB,Redis服务器内部还有如下几个场景能够自动触发RDB:
- 根据我们的
save m n
配置规则自动触发。 - 如果从节点执行全量复制操作, 主节点自动执行bgsave生成RDB文件并发送给从节点。
- 执行
debug reload
命令重新加载Redis时, 也会自动触发save操作。 - 默认情况下执行shutdown命令时, 如果没有开启AOF持久化功能则自动执行
bgsave
。
RDB执行流程