1、Redis中rdb是如何工作的?
server.c中通过main方法启动,调用initServer方法,initServer中调用
aeCreateTimeEvent创建了一个时间事件,触发serverCron回调方法,会调用
rdbSaveBackground方法
2、下面是一些有关rdb的服务端的属性:
long long dirty; /* Changes to DB from the last save */
long long dirty_before_bgsave;
pid_t rdb_child_pid; /* PID of RDB saving child */
struct saveparam *saveparams; /* Save points array for RDB */
int saveparamslen; /* Number of saving points */
char *rdb_filename; /* Name of RDB file */
int rdb_compression; /* Use compression in RDB? */
int rdb_checksum; /* Use RDB checksum? */
int rdb_del_sync_files;
time_t lastsave; /* Unix time of last successful save */
time_t lastbgsave_try; /* Unix time of last attempted bgsave */
time_t rdb_save_time_last; /* Time used by last RDB save run. */
time_t rdb_save_time_start; /* Current RDB save start time. */
int rdb_bgsave_scheduled; /* BGSAVE when possible if true. */
int rdb_child_type; /* Type of save by active child. */
int lastbgsave_status; /* C_OK or C_ERR */
int stop_writes_on_bgsave_err; /* Don't allow writes if can't BGSAVE */
int rdb_pipe_write; /* RDB pipes used to transfer the rdb */
int rdb_pipe_read;
connection **rdb_pipe_conns; /* Connections which are currently the */
int rdb_pipe_numconns; /* target of diskless rdb fork child. */
int rdb_pipe_numconns_writing;
char *rdb_pipe_buff;
int rdb_pipe_bufflen;
int rdb_key_save_delay;
int key_load_delay;
3、rdb相关的配置项:
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
rdb-del-sync-files no
rdb-save-incremental-fsync yes
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes