redis什么情况下会触发rdb
-
Redis在以下情况下会触发RDB(Redis Database)持久化:
-
手动触发:可以通过执行SAVE或BGSAVE命令来手动触发RDB持久化。SAVE命令会阻塞Redis服务器,直到RDB持久化完成后再返回,而BGSAVE命令会创建一个子进程来进行RDB持久化,不会阻塞Redis服务器的正常操作。
-
配置文件触发:当Redis服务器的配置文件中设置了save选项,即save
时,Redis会根据时间和修改的键数量来判断是否需要执行RDB持久化。当指定的时间间隔内,至少有指定数量的键被修改,Redis会触发RDB持久化。 -
关闭Redis服务器时触发:当Redis服务器接收到SIGTERM或者SIGINT信号时,会触发RDB持久化操作,并在持久化完成后关闭Redis服务器。
-
成功执行写命令时触发:当Redis服务器成功执行了至少一个写命令(包括SET、DEL、INCR等)后,如果本次写操作导致的键数量超过了RDB的阈值,Redis会触发RDB持久化。
需要注意的是,RDB持久化是将内存中的数据保存到磁盘文件中,以便在Redis重启时能够载入数据。而触发RDB持久化操作后,Redis服务器会通过fork创建一个子进程来执行实际的持久化操作,主进程继续提供服务。RDB持久化的数据文件默认命名为dump.rdb,保存在Redis的工作目录下。可以通过配置文件中的dir选项来指定Redis的工作目录。
1年前 -
-
当Redis启用了RDB持久化方式,其会在以下情况下触发RDB:
-
手动触发:管理员可以手动执行SAVE或BGSAVE命令来触发RDB持久化过程。SAVE会阻塞Redis服务器直到持久化完成,而BGSAVE则会创建一个子进程来进行持久化操作,不会阻塞服务器的正常运行。
-
配置设置:在Redis配置文件中设置了save参数,当满足条件时,Redis会自动触发RDB持久化过程。save参数是一个列表,每个元素都包含两个值,表示一次RDB保存的条件。例如,save 900 1表示如果900秒内写入至少1个key发生变化,就会触发RDB持久化。
-
关闭Redis服务器:当Redis服务器关闭时,会触发RDB持久化过程,将数据保存到磁盘上以便下次启动时加载。
-
主从同步:当Redis运行在主从模式下,主节点在执行BGSAVE命令时,会将生成的RDB文件传输给从节点,从节点接收到RDB文件并加载到内存中。
-
AOF重写:当Redis使用AOF持久化方式,并且配置了auto-aof-rewrite-percentage或auto-aof-rewrite-min-size参数,当AOF文件的大小超过指定的阈值时,Redis会自动进行AOF重写操作。AOF重写过程会生成一个新的RDB文件,并用它取代旧的AOF文件,同时还会将新生成的RDB文件加载到内存中。
1年前 -
-
Redis在保存数据时可以采用两种持久化方式:RDB(Redis Database)和AOF(Append Only File)。RDB是将Redis在内存中的数据以二进制形式保存到硬盘上,而AOF则是以追加的方式记录每一条写命令。
RDB持久化是通过触发RDB持久化命令或者配置文件中设置的策略来进行的。在以下情况下,Redis会触发RDB持久化:
-
手动触发:可以通过命令SAVE或BGSAVE来手动触发RDB持久化。SAVE命令会阻塞服务器,直到RDB持久化过程完成,而BGSAVE命令则是在后台进行持久化,不会阻塞服务器的正常操作。
-
配置文件设置:通过设置redis.conf配置文件中的save参数,可以根据时间间隔和写命令的数量来触发RDB持久化。配置文件中的save参数是一个数组,每个元素表示在多长时间内有多少次写操作时触发RDB持久化,默认情况下是save 900 1,表示在900秒内有至少1次写操作时触发RDB持久化。
save <seconds> <changes>在实际配置中,我们可以根据需求调整这个参数来进行持久化的策略设置,例如:
save 60 10000 # 在60秒内有至少10000次写操作时触发RDB持久化 save 300 1000 # 在300秒内有至少1000次写操作时触发RDB持久化 save 3600 10 # 在3600秒内有至少10次写操作时触发RDB持久化
值得注意的是,当使用RDB持久化时,Redis会在进行了一系列持久化操作之后保存整个数据集。这样可以保证数据的完整性,但也会带来一定的数据丢失风险。因此,在应用场景中需要根据实际情况来选择合适的持久化方式。
1年前 -