redis-rdb

162 阅读1分钟

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