Redis臭名昭著的神坑配置save,可以自动完成持久化。
save 3600 1 300 100 60 10000
但对持久化了解的人也知道,它是性能杀手,所以一般情况下,我们在线上不会用这个功能的,具体两种方法:
在Redis 6.2以前,上述两种方法都可以实现。但如果你用Redis 6.2、Redis 7就会发现使用第一种方法的话,会默认加上这个配置:
127.0.0.1:6380> config get save
1) "save"
2) "3600 1 300 100 60 10000"
before 6.2(6.0.15) server.c(加载配置文件前会清理掉save配置)
if (server.sentinel_mode && configfile && *configfile == '-') {
serverLog(LL_WARNING,
"Sentinel config from STDIN not allowed.");
serverLog(LL_WARNING,
"Sentinel needs config file on disk to save state. Exiting...");
exit(1);
}
resetServerSaveParams();
loadServerConfig(configfile,options);
After 6.2(例如7.0.11) server.c ,显然没有清理
....
loadServerConfig(server.configfile, config_from_stdin, options);
if (server.sentinel_mode) loadSentinelConfigFromQueue();
resetServerSaveParams()函数会置空默认配置
void resetServerSaveParams(void) {
zfree(server.saveparams);
server.saveparams = NULL;
server.saveparamslen = 0;
}
默认配置中:
void initServerConfig(void) {
...........
appendServerSaveParams(60*60,1); /* save after 1 hour and 1 change */
appendServerSaveParams(300,100); /* save after 5 minutes and 100 changes */
appendServerSaveParams(60,10000); /* save after 1 minute and 10000 changes */
}
1 .save配置一定要显示定义
save ""
2.Redis 6.2 7后改动较大(换作者),要仔细阅读release log
如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!
赞5
添加新评论0 条评论