설명
RDB (databses를 레디 스)
레디 스에서 영구 데이터 모드 (기본값), 중 하나는 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) {
에러의 errno =;
고토 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 일 저장
300 10 저장
60 만 저장
수단 :
1,900 초 이내에 오는 보조 데이터가 변경
10 개 데이터은 300 초이 달라있다
보조 데이터 만 60 초 내에 변화
상기는 그 동작을 트리거 조건이 만족하는 dump.rdb 스냅 샷 파일을 생성