Redis의 persistence

강세준·2023년 1월 25일
0

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

profile
데이터를 탐구하는 개발자

0개의 댓글