面试题答案
一键面试在Redis RDB持久化机制下,触发创建快照的条件如下:
- 配置文件设置的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快照操作。只要满足其中任意一个条件,就会执行快照操作。
- 执行flushall命令:当执行
FLUSHALL
命令时,无论是否满足save
配置的条件,都会立即触发RDB快照操作,将当前数据库中的所有数据以RDB格式保存到磁盘上。这个操作会清空所有数据库中的数据,并创建一个包含空数据库状态的新RDB文件。 - 执行shutdown命令:当执行
SHUTDOWN
命令关闭Redis服务器时,如果开启了RDB持久化(默认开启),会先触发一次RDB快照操作,将当前内存中的数据完整地保存到RDB文件中,然后再关闭服务器。这样可以保证在下次启动Redis时,能够从RDB文件中恢复数据,尽可能地减少数据丢失。 - 主从复制场景:在主从复制过程中,如果是全量复制,当从节点初次连接主节点时,主节点会执行一次BGSAVE命令(触发RDB快照创建),生成RDB文件并发送给从节点。从节点接收并加载这个RDB文件,以此来进行数据同步,达到与主节点数据一致的状态。