面试题答案
一键面试Redis字典数据保存到磁盘(RDB持久化策略下)
- 数据结构:Redis内部使用字典(哈希表)来存储数据库中的键值对。当进行RDB持久化时,会遍历这个字典结构。
- 编码:对于字典中的每个键值对,键和值会根据其类型进行特定的编码,以紧凑的形式存储。例如,字符串类型会按照一定的格式记录长度和内容,整数类型会直接以合适的二进制形式编码。
- 写入磁盘:经过编码后的键值对数据,按照RDB文件的格式规范,依次写入到磁盘文件中。
RDB文件的生成机制
- 手动触发
- SAVE命令:该命令会阻塞Redis服务器进程,直到RDB文件创建完毕。在这个过程中,服务器不能处理其他任何命令。
- BGSAVE命令:会派生出一个子进程,由子进程负责创建RDB文件,而父进程继续处理客户端请求。子进程在生成RDB文件时,会通过写时复制(Copy - On - Write, COW)技术来共享父进程的内存数据。
- 自动触发
- 根据配置:在Redis的配置文件(redis.conf)中,可以设置自动触发RDB持久化的条件,例如
save 900 1
表示在900秒内如果至少有1个键被修改,就触发BGSAVE命令。 - 主从复制:当一个Redis服务器作为主节点,与从节点进行全量复制时,主节点会执行BGSAVE命令生成RDB文件,并将其发送给从节点。
- 根据配置:在Redis的配置文件(redis.conf)中,可以设置自动触发RDB持久化的条件,例如