Data Persistence
레디스는 주 저장 장치로 메인 메모리를 사용하기 때문에 데이터를 잃어버리지 않도록 디스크에 저장하는 Persistence를 제공한다
RDB
rdb는 특정 시점에 주 메모리에 있는 모든 레디스 데이터를 디스크에 쓴다. snapshot이라고 생각해도 되며 binary 형태로 저장된다. save 옵션을 통해서 지정해줄 수 있고 여러개의 save 등록이 가능하며 or 조건이다. save 300 10
이면 300초동안 10번 이상 키가 변경되면 데이터를 디스크에 기록한다는 의미이다. fork 를 통한 디스크 쓰기 작업을 진행하기 때문에 부모 프로세스에 영향을 주지 않는다. 하지만 대량의 Disk I/O가 발생하며 CPU IOwait이 높게 나온다.
AOF
AOF는 조회 명령을 제외한 입력 수정 삭제 명령을 디스크에 기록한다. 디스크 기록 시점은 3가지 옵션이 있다.
- always : 명령마다 디스크에 기록하게 되지만 이 옵션을 사용하면 memory based database를 사용하는 의미가 사라진다
- everysec : 1초마다 디스크에 저장하며 디스크 기록은 별도 스레드가 수행한다.
- no : 디스크에 기록하는것을 OS가 수행한다. 일반적으로 디스크 기록 간격은 30초이다