説明
RDB(databsesをRedisの)
Redisの永続的なデータ・モード(デフォルト)のいずれかの下、RDBモードであり、それは単に、その後、一定の条件をトリガーする、子プロセスはdump.rdb(スナップショットファイル)を生成を開始します
ソースコードを解析する第二に、
2.1のsrc / rdb.c:rdbSaveBackground
コードのロジック:
1.fork()、子プロセスを作成します
2.子供はrdbSave関数を呼び出し、実際のダンプ操作を行います
2.2のsrc / rdb.c:
コードのロジック:
1.一時ファイル、tmp- {PID} .RDBを作成します。
snprintf(TMPFILE、256 、"temp- %D .RDB" 、(INT )GETPID())。
2.スナップショットデータを一時ファイルに書き込まれます
rioInitWithFile(&RDB、FP);
もし(rdbSaveRio(&RDB、およびエラー)== C_ERR){
エラー番号=エラー。
後藤WERR;
}
3.データが実際にディスクに書き込まれます
IF (にfflush(FP)== EOF )GOTO WERR; //キャッシュされたデータのブラシユーザースペース、カーネル空間データ・キャッシュに
IF - (FSYNC(FILENO(FP))== 1 )GOTO //キャッシュデータの実際の物理ディスクにおけるブラシのカーネル空間へ、WERR
IF (fcloseを(FP)== EOF )GOTO WERR; //近いファイルは、書き込み動作が完了しています
4.一時ファイル名前を変更dump.rdb
名前の変更(TMPFILE、ファイル名)
第三に、トリガ条件の設定
900 1保存
300 10保存
60 10000保存
手段:
1 900秒以内に来る二次データの変更があります
10データの変更300秒があります。
60秒以内万二次データの変更
上記は、それが動作をトリガする条件を満たすはdump.rdbスナップショットファイルを生成します