[Redis] RDB와 AOF

Data Persistence

레디스는 주 저장 장치로 메인 메모리를 사용하기 때문에 데이터를 잃어버리지 않도록 디스크에 저장하는 Persistence를 제공한다

RDB

rdb는 특정 시점에 주 메모리에 있는 모든 레디스 데이터를 디스크에 쓴다. snapshot이라고 생각해도 되며 binary 형태로 저장된다. save 옵션을 통해서 지정해줄 수 있고 여러개의 save 등록이 가능하며 or 조건이다. save 300 10이면 300초동안 10번 이상 키가 변경되면 데이터를 디스크에 기록한다는 의미이다. fork 를 통한 디스크 쓰기 작업을 진행하기 때문에 부모 프로세스에 영향을 주지 않는다. 하지만 대량의 Disk I/O가 발생하며 CPU IOwait이 높게 나온다.

AOF

AOF는 조회 명령을 제외한 입력 수정 삭제 명령을 디스크에 기록한다. 디스크 기록 시점은 3가지 옵션이 있다.

  1. always : 명령마다 디스크에 기록하게 되지만 이 옵션을 사용하면 memory based database를 사용하는 의미가 사라진다
  2. everysec : 1초마다 디스크에 저장하며 디스크 기록은 별도 스레드가 수행한다.
  3. no : 디스크에 기록하는것을 OS가 수행한다. 일반적으로 디스크 기록 간격은 30초이다
Author: Song Hayoung
Link: https://songhayoung.github.io/2020/07/19/Redis/rdb-aof/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.