Redis 提供了几种不同类型的数据持久化方案:
- RDB 会每间隔一段时间,就持久化当前时间点的数据快照,并保存数据快照至磁盘文件中;
- AOF 会记录每个修改数据的命令至磁盘文件中,用于在服务重启后的数据恢复;
- 完全不使用数据持久化机制;
- 组合使用 RDB 和 AOF 两种机制;
RDB 优点
- RDB 产生的快照文件是非常紧凑的,相比于 AOF 的日志文件会小很多;
- RDB 非常适合用于数据的备份和灾备;
RDB 缺点
- RDB 可能会丢失最近一次间隔时间内的数据;
- 在数据量非常大的情况下,RDB 在 fork 子进程时可能会非常耗时,以至于影响 Redis 的主服务进程。
AOF 优点
- 可以选择「不显示 fsync」、「每秒 fsync」、「每个命令后 fsync」三种不同的 AOF 同步数据策略;
- AOF 只是简单的追加日志,所以执行起来会很简单;
- 当 AOF 的日志文件太大的时候,Redis 会重写并压缩日志文件;
- AOF 的日志文件内容更容易让人理解
AOF 缺点
- AOF 产生的日志文件会非常大;
- 在「每个命令后 fsync」策略下,AOF 可能会非常得慢。