MST

星途 面试题库

面试题:Redis RDB持久化机制中触发快照的条件有哪些?

请详细阐述在Redis RDB持久化机制下,能够触发创建快照的具体条件。
46.5万 热度难度
数据库Redis

知识考点

AI 面试

面试题答案

一键面试

在Redis RDB持久化机制下,触发创建快照的条件如下:

  1. 配置文件设置的save条件: 在Redis的配置文件(通常是redis.conf)中,可以通过save指令设置触发RDB快照的条件。例如:
save 900 1
save 300 10
save 60 10000
  • save 900 1:表示如果在900秒(15分钟)内,至少有1个键发生了变化,就触发一次RDB快照。
  • save 300 10:意味着300秒(5分钟)内,若至少有10个键发生变化,则进行RDB快照。
  • save 60 10000:即60秒内,当至少有10000个键发生变化时,触发RDB快照操作。只要满足其中任意一个条件,就会执行快照操作。
  1. 执行flushall命令:当执行FLUSHALL命令时,无论是否满足save配置的条件,都会立即触发RDB快照操作,将当前数据库中的所有数据以RDB格式保存到磁盘上。这个操作会清空所有数据库中的数据,并创建一个包含空数据库状态的新RDB文件。
  2. 执行shutdown命令:当执行SHUTDOWN命令关闭Redis服务器时,如果开启了RDB持久化(默认开启),会先触发一次RDB快照操作,将当前内存中的数据完整地保存到RDB文件中,然后再关闭服务器。这样可以保证在下次启动Redis时,能够从RDB文件中恢复数据,尽可能地减少数据丢失。
  3. 主从复制场景:在主从复制过程中,如果是全量复制,当从节点初次连接主节点时,主节点会执行一次BGSAVE命令(触发RDB快照创建),生成RDB文件并发送给从节点。从节点接收并加载这个RDB文件,以此来进行数据同步,达到与主节点数据一致的状态。