hybrid
hybrid는 앞서 얘기했듯 rdb snapshot 에 aof를 혼합하는 형태이다
rdb를 통해 빠르게 메모리에 로드할 수 있다는 장점,
aof를 통해 데이터 손실을 줄일 수 있다는 장점을
가져갈 수 있다
순수 aof보다 크기가 작다는 장점이 있다
구조는 rdb snapshot을 통해 앞을 구성하고 나머지 최신 명령은 aof 로 저장하는 것이다
hybrid에서의 재작성
- 부모 : aof file (재작성 실패 대비 원본 aof) + 재작성 버퍼(메모리에 존재하는 임시 버퍼로 자식이 재작성 시작한 시점 이후 명령들만 모아 둠)
- 자식 : 메모리 상태 스캔 (모든 키와 값을 rdb로 파일에 씀)
- rdb 를 다 쓴 뒤 부모에게 자식이 보고
- 부모 : 재작성 버퍼에 있는 명령을 자식에게 전달
- 자식 : aof 형식으로 파일 끝에 추가
- 원본을 자식이 만든 파일로 교체
단점
- 파일 구조 복잡
- 4.0 미만 버전과 호환 x
- aof 와 동일한 메모리 오버헤드가 있음
물론 rdb snapshot도 cow로 인한 오버헤드는 발생하지만 aof, hybrid 만큼은 아님