MST

星途 面试题库

面试题:Redis持久化机制中RDB与AOF的区别

请详细阐述Redis的RDB(快照)和AOF(追加式文件)这两种持久化机制在工作原理、写入频率、数据恢复特点等方面有哪些区别。
27.7万 热度难度
数据库Redis

知识考点

AI 面试

面试题答案

一键面试

工作原理

  • RDB:在指定的时间间隔内,对当前内存中的数据进行快照,将其以二进制的形式保存到磁盘文件中。Redis会fork出一个子进程,由子进程来负责将数据写入RDB文件,父进程继续处理客户端请求。
  • AOF:以日志的形式记录Redis服务器执行的每一个写操作命令。当Redis服务器重启时,会重新执行AOF文件中的命令,从而恢复数据到之前的状态。

写入频率

  • RDB:写入频率是根据配置的save规则来执行,例如 save 900 1 表示900秒内如果有1个键被修改则进行一次快照。通常是周期性执行,频率较低。
  • AOF:有三种写入策略:
    • always:每次执行写命令就立即将命令写入AOF文件,写入频率最高,数据安全性最高,但性能开销也最大。
    • everysec:每秒将缓冲区中的命令写入AOF文件,是性能和数据安全性的折中方案,默认采用此策略。
    • no:由操作系统决定何时将缓冲区内容写入磁盘,写入频率取决于操作系统,性能最好,但数据安全性最差。

数据恢复特点

  • RDB:恢复数据时,直接将RDB文件读入内存,速度相对较快,尤其适合大规模数据恢复。但由于是周期性快照,可能会丢失最近一次快照到故障期间的数据。
  • AOF:恢复数据时,会按顺序重放AOF文件中的命令,恢复的数据更完整,基本能恢复到故障前的状态(取决于写入策略,always策略下几乎不丢数据)。但由于重放命令需要一定时间,恢复速度相对RDB较慢,且AOF文件可能会变得非常大,重放时间会更长。此外,如果AOF文件损坏,可能需要借助工具修复才能恢复数据。