Redis 提供了两种主要的持久化机制:RDB(Redis Database)快照和 AOF(Append-Only File)日志。
1. RDB(Redis Database)快照
RDB 持久化是将 Redis 在某个时间点的整个数据集保存到一个二进制文件中。这个文件称为 RDB 文件。
工作原理
- Redis 可以在特定时间间隔内创建数据集的快照,并将其写入磁盘。
- 可以通过手动执行 SAVE 或 BGSAVE 命令来生成 RDB 文件。
- SAVE:阻塞 Redis 服务器,直到快照完成(不推荐在生产环境中使用)。
- BGSAVE:创建一个子进程,子进程将快照写入磁盘,主进程继续处理请求。
2. AOF(Append-Only File)日志
AOF 持久化记录每次对 Redis 的写操作,将这些操作以追加的方式写入文件。
工作原理
- 每次执行写操作时,Redis 将该操作记录到 AOF 文件中。
- AOF 文件可以通过 fsync 策略来控制写入磁盘的频率:
- always:每次写操作都执行 fsync,最安全但性能最差。
- everysec:每秒执行一次 fsync,较为安全且性能较好(推荐)。
- no:不执行 fsync,由操作系统决定何时写入磁盘,性能最好但不安全。
- 可以通过 BGREWRITEAOF 命令对 AOF 文件进行重写,压缩文件大小。