Redis 作为一款高性能的内存数据库,其数据默认存储在内存中,但为了确保数据持久化(即服务器重启后数据不丢失),Redis 提供了将数据保存到硬盘的机制,主要通过两种命令实现:SAVE
和 BGSAVE
,此外还有配置文件中的自动持久化策略(RDB 和 AOF),以下将详细介绍这些命令的使用场景、原理及注意事项。

手动持久化命令
SAVE
命令
SAVE
命令会同步执行,即主进程会阻塞所有客户端请求,直到数据保存完成,这种方式会确保数据立即写入硬盘,但会严重影响 Redis 的性能,尤其是在数据量较大的情况下。SAVE
命令通常只在数据量小且对实时性要求极高的场景下使用,或在服务器停止维护前手动触发。
语法:SAVE
示例:在 Redis 客户端输入 SAVE
,Redis 会开始将内存中的快照写入 dump.rdb
文件(默认文件名),完成后返回 OK
。
BGSAVE
命令
BGSAVE
(Background Save)是异步执行的持久化命令,Redis 会通过子进程完成数据保存,主进程继续处理客户端请求,避免了阻塞,这是生产环境中推荐的手动持久化方式。
语法:BGSAVE
示例:输入 BGSAVE
后,Redis 会返回 Background saving started
,子进程会在后台将数据快照写入硬盘,保存完成后,Redis 会在日志中记录相关信息。
注意:如果已有子进程在执行持久化任务(如前一次 BGSAVE
未完成或 AOF 重写正在进行),BGSAVE
会直接返回错误。
自动持久化配置
除了手动命令,Redis 还支持自动持久化,通过配置文件 redis.conf
中的参数实现,主要包括 RDB 和 AOF 两种方式。
RDB(Redis Database)快照
RDB 是通过定时将内存数据快照保存到硬盘的方式,配置参数如下:

save <seconds> <changes>
:在指定秒数内,如果数据修改次数达到阈值,则自动触发BGSAVE
。save 900 1
表示 900 秒内有 1 次修改就保存。stop-writes-on-bgsave-error
:BGSAVE
失败,是否停止写入操作(默认为yes
)。rdbcompression
:是否压缩 RDB 文件(默认为yes
)。rdbchecksum
:是否进行 RDB 文件校验(默认为yes
)。
优点:文件体积小,恢复速度快;
缺点:可能会丢失最后一次快照后的数据。
AOF(Append Only File)日志
AOF 通过记录所有写操作命令到日志文件来实现持久化,配置参数包括:
appendonly
:是否启用 AOF(默认为no
)。appendfsync
:同步策略,可选always
(每次写入同步)、everysec
(每秒同步,默认)、no
(由操作系统控制)。auto-aof-rewrite-min-size
和auto-aof-rewrite-percentage
:AOF 文件重写触发条件(例如文件大小超过 64MB 且增长 100% 时重写)。
优点:数据安全性高,几乎不丢失数据;
缺点:文件体积大,恢复速度较慢。
持久化对比与选择
特性 | RDB(快照) | AOF(日志) |
---|---|---|
持久化方式 | 定时全量快照 | 追加写操作命令 |
数据安全性 | 可能丢失最后一次快照数据 | 默认每秒同步,数据丢失少 |
文件体积 | 小,压缩后更节省空间 | 大,记录所有写操作 |
恢复速度 | 快 | 慢 |
性能影响 | BGSAVE 无阻塞,SAVE 阻塞 |
fsync 策略影响性能 |
选择建议:

- 对数据安全性要求高且能接受一定性能损耗,选 AOF;
- 对性能要求高且可容忍少量数据丢失,选 RDB;
- 生产环境常结合两者使用(RDB 备份 + AOF 实时持久化)。
相关问答 FAQs
Q1:Redis 持久化文件存储在什么位置?如何修改路径?
A1:Redis 的 RDB 文件默认存储在 Redis 安装目录下的 dump.rdb
,AOF 文件为 appendonly.aof
,可通过修改配置文件 redis.conf
中的 dir
参数(指定文件目录)和 dbfilename
(RDB 文件名)或 appendfilename
(AOF 文件名)调整路径,修改后需重启 Redis 生效。
Q2:Redis 突然宕机,使用 RDB 和 AOF 哪种方式恢复的数据更完整?
A2:AOF 恢复的数据更完整,因为 RDB 是定时快照,宕机时可能丢失最后一次快照后的所有数据;而 AOF 默认每秒同步一次,最多丢失 1 秒内的数据,且通过 appendfsync always
可实现零丢失(但性能较低),恢复时,Redis 会优先加载 AOF 文件,若 AOF 未启用再加载 RDB 文件。