面试题答案
一键面试1. 快照机制
- fork操作:Redis 使用
fork
系统调用创建一个子进程。fork
操作会复制父进程的内存空间,包括所有的 Redis 数据结构。此时,父进程和子进程共享相同的内存数据,这个过程几乎是瞬间完成的,因为采用了写时复制(Copy - On - Write,COW)技术。这确保了在开始创建快照时,数据的一致性状态被“冻结”。 - 子进程写快照:子进程负责将内存中的数据写入到 RDB 文件中。在这个过程中,父进程继续处理客户端请求,由于采用 COW 技术,只要父进程没有修改共享内存数据,子进程看到的数据就是一致的。当父进程需要修改数据时,会为修改的数据分配新的内存空间,而子进程看到的原始数据不受影响,继续进行 RDB 文件的写入操作,从而保障了数据一致性。
2. 配置选项
- save 配置:通过
save
配置项设定自动触发 RDB 快照的条件,例如save 900 1
表示 900 秒内如果至少有 1 个键被修改,就触发一次快照。合理设置这些条件可以在数据更新频率和数据一致性之间找到平衡,保证在合适的时机进行数据持久化,确保数据一致性。 - stop - writes - on - bgsave - error:当
bgsave
(后台保存,即创建 RDB 文件的操作)出现错误时,该配置决定是否停止写入操作。如果设置为yes
,一旦 RDB 创建过程出错,Redis 将停止接受写命令,防止数据不一致的进一步扩大。这有助于在发生严重错误时,维持现有数据的一致性状态。