# Redis 数据持久化：RDB 与 AOF

- 原文地址：https://www.kuddy.cn/archives/129
- 发布时间：2022-07-15 14:04:14
- 更新时间：2026-05-18 02:41:27
- 分类：数据库
- 标签：Redis

> 系统梳理 Redis RDB 与 AOF 两种持久化机制，包括配置项、触发方式、恢复流程、优缺点和适用场景。

---

Redis 有两种持久化方案：RDB（Redis DataBase）和 AOF（Append Only File）。

## RDB 详解

RDB 是 Redis 默认的持久化方案。在指定的时间间隔内执行指定次数的写操作，就会将内存中的数据写入磁盘，在指定目录下生成 dump.rdb 文件。Redis 重启时会通过加载 dump.rdb 恢复数据。

## 从配置文件了解 RDB

打开 redis.conf 文件，可以看到 RDB 的核心规则配置：

```
save 900 1
save 300 10
save 60 10000
```

指定本地数据库文件名，一般采用默认的 dump.rdb。

```
dbfilename dump.rdb
```

指定本地数据库存放目录。

```
dir ./
```

配置存储到本地数据库时是否压缩数据，默认是 yes。

```
rdbcompression yes
```

## 触发 RDB 快照

1. 在指定时间间隔内，执行指定次数的写操作。

2. 执行 save 或 bgsave 命令。

3. 执行 flushall 命令。

4. 执行 shutdown 命令。

## 通过 RDB 文件恢复数据

将 dump.rdb 文件拷贝到 Redis 数据目录下，重启 Redis 服务即可。

## RDB 的优缺点

优点：适合大规模数据恢复；如果业务对数据完整性和一致性要求不高，RDB 是不错的选择。

缺点：数据完整性和一致性不如 AOF；备份时 Redis 会 fork 子进程，可能带来额外内存占用。

## AOF 详解

AOF 默认不开启。它通过日志追加的方式记录每个写操作，Redis 重启时根据日志内容重新执行写指令完成数据恢复。

## 从配置文件了解 AOF

开启 AOF：

```
appendonly yes
```

指定 AOF 文件名：

```
appendfilename "appendonly.aof"
```

指定更新日志条件：

```
appendfsync everysec
```

配置 AOF 重写触发机制：

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

## 根据 AOF 文件恢复数据

正常情况下，将 appendonly.aof 文件拷贝到 Redis 数据目录下，重启 Redis 服务即可。

如果 AOF 文件格式异常，可以通过命令修复：

```
redis-check-aof --fix appendonly.aof
```

## AOF 重写机制

AOF 会把写操作追加到文件中，文件冗余内容会越来越多。当 AOF 文件大小超过设定阈值时，Redis 会 fork 新进程读取内存中的数据，并重新写入临时文件，最后替换旧的 AOF 文件。

## 总结

5. Redis 默认开启 RDB 持久化。

6. RDB 适合大规模恢复，但数据完整性相对较弱。

7. AOF 需要手动开启，默认推荐每秒异步记录一次。

8. AOF 数据完整性更高，但文件更大、恢复更慢。

9. 如果 Redis 只是缓存，可以关闭持久化；如果需要持久化，建议 RDB 和 AOF 同时开启。