MST
星途 面试题库

面试题:Redis字典持久化之RDB策略相关

请阐述Redis中RDB持久化策略下,Redis字典数据是如何保存到磁盘的?RDB文件的生成机制是怎样的?
44.5万 热度难度
数据库Redis

知识考点

AI 面试

面试题答案

一键面试

Redis字典数据保存到磁盘(RDB持久化策略下)

  1. 数据结构:Redis内部使用字典(哈希表)来存储数据库中的键值对。当进行RDB持久化时,会遍历这个字典结构。
  2. 编码:对于字典中的每个键值对,键和值会根据其类型进行特定的编码,以紧凑的形式存储。例如,字符串类型会按照一定的格式记录长度和内容,整数类型会直接以合适的二进制形式编码。
  3. 写入磁盘:经过编码后的键值对数据,按照RDB文件的格式规范,依次写入到磁盘文件中。

RDB文件的生成机制

  1. 手动触发
    • SAVE命令:该命令会阻塞Redis服务器进程,直到RDB文件创建完毕。在这个过程中,服务器不能处理其他任何命令。
    • BGSAVE命令:会派生出一个子进程,由子进程负责创建RDB文件,而父进程继续处理客户端请求。子进程在生成RDB文件时,会通过写时复制(Copy - On - Write, COW)技术来共享父进程的内存数据。
  2. 自动触发
    • 根据配置:在Redis的配置文件(redis.conf)中,可以设置自动触发RDB持久化的条件,例如save 900 1表示在900秒内如果至少有1个键被修改,就触发BGSAVE命令。
    • 主从复制:当一个Redis服务器作为主节点,与从节点进行全量复制时,主节点会执行BGSAVE命令生成RDB文件,并将其发送给从节点。