Redis의 데이터 저장 방식
- Redis는 In-memory DB의 특징을 가지고 있기 때문에 Redis서버를 재시작하면 데이터가 유실될 수 있다.
- Redis를 캐시가 아닌 용도로 사용할때는 적절한 데이터 백업이 필요하다.
AOF (Append Only File)
- AOF 파일은 default로 appendonly.aof 파일에 기록됩니다.
- 입력/수정/삭제 명령이 실행될 때 마다 기록되지만 조회 명령은 기록되지 않습니다.
- 장애 상황 직전까지 모든 데이터가 보장되어야 할 경우 사용을 고려해 볼 수 있습니다.
- APPENDSYNC 옵션이 everysec일때 1초 정도의 데이터가 유실될 수 있습니다.
- 동일한 데이터 세트에 대해 동등한 RDB 파일보다 크고 fsync정책에 따라 RDB보다 느릴 수 있습니다.
RDB (Snapshot)
- RDB방식은 지정된 간격으로 데이터 세트의 특정 지점에 스냅샷을 수행하여 해당 시점의 데이터 전체를 바이너리 파일로 저장합니다.
- 동등한 데이터 세트에 대해 동등한 AOF 파일보다 작고 그에 따라 로딩 속도가 AOF보다 빠릅니다.
- 백업은 필요하지만 어느 정도의 데이터 손실이 발생해도 괜찮은 경우 사용을 고려해 볼 수 있습니다.
자동 / 수동 데이터 저장 방식
RDB
- 자동 : redis.conf 파일에서 save옵션 사용(시간 기준)
- 수동 : BGSAVE 커맨드를 이용해 redis-cli에서 수동으로 RDB 파일 저장(SAVE 커맨드 사용x)
AOF
- 자동 : redis.conf 파일에서 auto-aof-rewrite-percentage 옵션 (크기 기준)
- 수동 : BGREWRITEAOF 커맨드를 이용해 redis-cli에서 수동으로 AOF 파일 재작성 가능
선택기준
- 레디스를
캐시
용도로 사용한다면 RDB와 AOF기능을 모두 사용하지 않는 편이 좋습니다.
- 레디스를 영구 저장소용으로 사용할 경우 AOF는 장애 상황 직전까지 데이터가 보장되어야 할 경우 사용을 고려 해볼만 하고 RDB는 백업은 필요하지만 어느정도 데이터 손실이 발생해도 괜찮을 경우 고려해볼만 합니다. 이외에 가장 강력한 방법은 RDB와 AOF둘다 사용하는 방식입니다.
참고자료
http://redisgate.kr/redis/configuration/persistence.php
https://redis.io/docs/management/persistence/
https://www.youtube.com/watch?v=92NizoBL4uA
https://meetup.nhncloud.com/posts/227