Redis中BGSAVE配置工作机制解析及save 60 1000配置规则与疑问解答
Redis BGSAVE配置详解:关于
save 60 1000的那些疑问 嘿,这个问题问到点子上了,很多刚开始接触Redis持久化的同学都会被这个配置搞懵,我给你把逻辑讲得明明白白:
首先,save <seconds> <changes>的核心逻辑
Redis的save配置是组合触发条件,不是单一条件触发。它的完整含义是:
自上次成功执行快照(不管是手动
BGSAVE/SAVE,还是自动触发的快照)开始,在<seconds>秒的时间范围内,若Redis接收到了至少<changes>次键值对修改操作(比如SET、HSET、LPUSH这类写操作),就会自动触发BGSAVE异步生成快照。
针对save 60 1000的具体解释
咱们拿你提到的save 60 1000来说:
- 不是每60秒固定执行一次快照,也不是每攒够1000次写操作就立刻执行,必须同时满足两个条件:
- 距离上次成功生成快照已经过去了60秒以上;
- 在这60秒的时间窗口内,发生了至少1000次写操作。
- 如果60秒内写操作没达到1000次,那这个时间窗口的条件就不满足,不会自动触发快照。举个例子:上次快照在10:00:00生成,到10:01:00(刚好60秒)的时候只发生了800次写操作,那Redis不会触发BGSAVE;接下来Redis会继续监控,从10:00:00开始算,要是到10:01:30的时候写操作累计到了1000次,此时距离上次快照已经过了90秒(满足60秒的时间条件),同时写次数达标,这时候才会触发BGSAVE。
额外补充几点
- Redis可以配置多个
save条件,比如同时配置save 60 1000和save 300 100,只要其中任意一个条件满足,就会触发快照; - 除了自动触发,你也可以手动执行
BGSAVE命令来强制生成快照; - 当Redis正常关闭时,也会自动执行快照操作(前提是开启了RDB持久化)。
内容的提问来源于stack exchange,提问作者Ankit Sahay
相关产品推荐
相关产品推荐

