1.Redis有哪2种持久化方式?分别的优缺点是什么?

Redis 提供了 RDB(快照)和 AOF(日志)两种持久化方式,它们各有千秋:
-
RDB (Redis DataBase) - 快照模式
-
原理: 在指定的时间间隔内,将内存中的数据集快照写入磁盘(
dump.rdb)。 -
优点:
-
恢复快: RDB 文件是紧凑的二进制文件,Redis 加载它来恢复数据非常快。
-
备份方便: 适合做冷备(如每小时备份一次),文件小,易于传输。
-
-
缺点:
-
数据丢失风险大: 它是“间隔”执行的(如 5 分钟一次),如果 Redis 意外宕机,会丢失最后一次快照之后的所有修改。
-
性能开销: 生成快照需要
fork子进程,如果数据量巨大,fork操作可能会阻塞主线程几百毫秒。
-
-
-
AOF (Append Only File) - 日志模式
-
原理: 将 Redis 执行的每一条写命令记录到日志文件中。
-
优点:
-
数据更安全: 可以配置为“每秒刷盘 (
appendfsync everysec)”,即使宕机也最多只丢失 1 秒的数据。 -
可读性强: AOF 文件是纯文本协议格式,如果误删了数据(
FLUSHALL),只要在重写前手动删掉文件末尾的命令即可恢复。
-
-
缺点:
-
文件体积大: 同样的 Dataset,AOF 文件通常比 RDB 大得多。
-
恢复慢: 需要像“回放录像”一样重新执行所有命令,启动速度远慢于 RDB。
-
-
💡 最佳实践(混合持久化): “在 Redis 4.0 之后,推荐使用混合持久化。它结合了两者优点:AOF 重写时,将当前内存数据以 RDB 格式写入 AOF 文件的开头,后续的增量数据继续以 AOF 格式写入。 这样既保证了启动快(读 RDB),又保证了数据全(补 AOF 日志)。”