面试题答案
一键面试工作原理
- 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文件损坏,可能需要借助工具修复才能恢复数据。