MST

星途 面试题库

面试题:Redis RDB文件创建过程中如何保障基本的数据一致性

请简述在Redis创建RDB文件过程中,为保障数据一致性所采取的常规机制与操作。
21.0万 热度难度
数据库Redis

知识考点

AI 面试

面试题答案

一键面试

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 将停止接受写命令,防止数据不一致的进一步扩大。这有助于在发生严重错误时,维持现有数据的一致性状态。