MST

星途 面试题库

面试题:Redis跳跃表持久化方式及实现细节

请简述Redis跳跃表常见的持久化方式有哪些,并简要说明其中一种方式在实现过程中的关键步骤与技术要点。
29.7万 热度难度
数据库Redis

知识考点

AI 面试

面试题答案

一键面试

Redis跳跃表常见持久化方式

  1. RDB(Redis Database):将Redis在内存中的数据以快照的形式保存到磁盘,在指定的时间间隔内将内存的数据以二进制的形式写入到一个dump.rdb文件中。
  2. AOF(Append - Only - File):以日志的形式记录服务器所处理的每一个写、删除操作,查询操作不会记录,以文本的方式记录,可以打开文件看到详细的操作记录。

以RDB为例说明实现过程关键步骤与技术要点

  1. 关键步骤
    • 触发机制:分为手动触发(SAVE、BGSAVE命令)和自动触发(根据配置文件中save m n规则,在m秒内如果有n个键发生变化则自动触发BGSAVE)。
    • 子进程创建:BGSAVE时,Redis主进程fork一个子进程来进行持久化操作,主进程继续处理客户端请求。
    • 数据写入:子进程将内存数据以RDB格式写入到临时文件。
    • 替换旧文件:子进程完成写入后,将临时文件替换为最终的dump.rdb文件。
  2. 技术要点
    • fork操作:fork时采用写时复制(Copy - On - Write, COW)技术,父进程和子进程共享内存数据,只有当父进程修改数据时才复制一份数据,保证子进程的数据一致性。
    • RDB文件格式:需要了解RDB文件的二进制结构,包括文件头、数据库数据、EOF标记等,以正确写入和读取数据。
    • 错误处理:在写入文件过程中要处理各种可能的错误,如磁盘空间不足、I/O错误等,确保持久化过程的可靠性。