//源码文件redis.c的serverCron函数// 遍历所有保存条件,看是否需要执行 BGSAVE 命令for(j =0; j < server.saveparamslen; j++){struct saveparam *sp = server.saveparams+j;/* Save if we reached the given amount of changes,
* the given amount of seconds, and if the latest bgsave was
* successful or if, in case of an error, at least
* REDIS_BGSAVE_RETRY_DELAY seconds already elapsed. */// 检查是否有某个保存条件已经满足了if(server.dirty >= sp->changes &&
server.unixtime-server.lastsave > sp->seconds &&(server.unixtime-server.lastbgsave_try >
REDIS_BGSAVE_RETRY_DELAY ||
server.lastbgsave_status == REDIS_OK)){redisLog(REDIS_NOTICE,"%d changes in %d seconds. Saving...",
sp->changes,(int)sp->seconds);// 执行 BGSAVErdbSaveBackground(server.rdb_filename);break;}}
################################ SNAPSHOTTING ################################
#
# Save the DB on disk:
#
# save <seconds><changes>
#
# Will save the DB if both the given number of seconds and the given
# number of write operations against the DB occurred.
#
# In the example below the behaviour will be to save:
# after 900 sec (15 min)if at least 1 key changed
# after 300 sec (5 min)if at least 10 keys changed
# after 60 sec if at least 10000 keys changed
#
# Note: you can disable saving completely by commenting out all "save" lines.
#
# It is also possible to remove all the previously configured save
# points by adding a save directive with a single empty string argument
# like in the following example:
#
# save ""
save 9001
save 30010
save 6010000
mzpdeMac-mini:redis-4.0.14 mzp$ od -c dump.rdb
0000000 R E D I S 0 0 0 8 372 \t r e d i s
0000020 - v e r 006 4 . 0 . 1 4 372 \n r e d
0000040 i s - b i t s 300 @ 372 005 c t i m e
0000060 302 376 b 004 ] 372 \b u s e d - m e m 302
0000100 0 274 017 \0 372 \f a o f - p r e a m b
0000120 l e 300 \0 377 u \a 277 { 277 B 301 372
0000135
mzpdeMac-mini:redis-4.0.14 mzp$ rm ./dump.rdb
mzpdeMac-mini:redis-4.0.14 mzp$ od -c dump.rdb
0000000 R E D I S 0 0 0 8 372 \t r e d i s
0000020 - v e r 006 4 . 0 . 1 4 372 \n r e d
0000040 i s - b i t s 300 @ 372 005 c t i m e
0000060 302 257 c 004 ] 372 \b u s e d - m e m 302
0000100 240 274 017 \0 372 \f a o f - p r e a m b
0000120 l e 300 \0 376 \0 373 001 \0 \0 004 n a m e \a
0000140 m o z p i n g 377 N 222 274 016 ` 365 l 224
0000160
mzpdeMac-mini:redis-4.0.14 mzp$
# The filename where to dump the DB,
#这是RDB文件的名字,默认是dump.rdb
dbfilename dump.rdb
#这是RDB文件和AOF文件保存的路径,默认是当前路径
# The working directory.
#
# The DB will be written inside this directory, with the filename specified
# above using the 'dbfilename' configuration directive.
#
# The Append Only File will also be created inside this directory.
#
# Note that you must specify a directory here, not a file name.
dir ./