Redis 영속성(Persistence) 개념
KUKJIN LEE • 1일 전 작성
영속성 개요
Redis는 기본적으로 메모리 기반 데이터베이스로 설계되었지만, 데이터를 영구적으로 저장할 수 있는 영속성 옵션을 제공합니다. 영속성은 Redis 서버가 중단되더라도 데이터를 복구할 수 있도록 하며, 주요 방법으로 RDB(Snapshot)와 AOF(Append Only File)가 있습니다.
Redis 클라우드에서 RDB와 AOF 설정 확인 방법
Redis Insight 또는 CLI 연결
- 화면에 제공된 Public Endpoint를 통해 Redis CLI 또는 Redis Insight를 사용해 Redis 서버에 연결합니다.
- 연결 후, 다음 명령어를 실행하면 현재 설정을 확인할 수 있습니다.
CONFIG GET save # RDB 저장 주기 확인
CONFIG GET appendonly # AOF 활성화 여부 확인
RDB(Snapshot)
개념
RDB는 특정 시점의 데이터를 스냅샷 형태로 디스크에 저장합니다. 이는 설정된 주기적으로 Redis 데이터를 덤프하여 생성되는 바이너리 파일입니다.
장점
-
디스크 I/O가 적어 Redis 성능에 영향을 최소화.
-
파일 크기가 작고 효율적.
-
재시작 시 빠르게 데이터를 로드 가능.
단점
-
데이터 손실 가능성: 저장 주기와 서버 종료 사이의 데이터는 손실될 수 있음.
-
큰 데이터베이스에서는 스냅샷 생성 시 지연 가능성.
설정
RDB 설정은 redis.conf
파일에서 save
옵션을 통해 조정합니다.
save 900 1 # 900초(15분)마다 1개 이상의 키가 변경되었을 경우 저장
save 300 10 # 300초(5분)마다 10개 이상의 키가 변경되었을 경우 저장
save 60 10000 # 60초(1분)마다 10,000개 이상의 키가 변경되었을 경우 저장
AOF(Append Only File)
개념
AOF는 Redis가 처리한 모든 쓰기 명령을 로그 파일에 순차적으로 기록하는 방식입니다. 서버가 재시작되면 AOF 파일을 재생하여 데이터를 복구합니다.
장점
-
높은 데이터 안전성: 데이터 손실을 최소화.
-
파일이 사람이 읽을 수 있는 형태로 저장되어 디버깅이 용이.
단점
-
파일 크기가 커질 가능성.
-
추가적인 디스크 I/O로 성능 저하 가능성.
-
복구 속도가 느릴 수 있음.
설정
AOF 설정은 redis.conf
파일에서 다음과 같이 조정합니다.
appendonly yes # AOF 활성화
appendfsync always # 모든 쓰기 명령 후 디스크에 동기화
appendfsync everysec # 1초마다 동기화 (권장)
appendfsync no # OS가 디스크에 기록할 때까지 대기
RDB와 AOF의 차이점
특징 |
RDB |
AOF |
---|---|---|
저장 방식 |
특정 시점 스냅샷 저장 |
명령어 로그 순차 저장 |
데이터 안전성 |
주기적 저장으로 손실 가능 |
동기화 주기에 따라 안전성 높음 |
성능 영향 |
성능에 미치는 영향 적음 |
디스크 I/O로 성능 저하 가능 |
파일 크기 |
상대적으로 작음 |
상대적으로 큼 |
복구 속도 |
빠름 |
느릴 수 있음 |
영속성 전략 선택 가이드
Redis에서 RDB와 AOF 중 어떤 영속성 옵션을 사용할지 선택하는 것은 애플리케이션의 요구사항에 따라 달라집니다. 아래는 선택 가이드를 제공합니다.
RDB를 선택해야 하는 경우
-
데이터 손실에 민감하지 않음.
-
고성능이 중요한 애플리케이션.
-
주기적으로 백업이 필요한 경우.
AOF를 선택해야 하는 경우
-
데이터 손실 가능성을 최소화해야 함.
-
사람이 읽을 수 있는 로그 파일이 필요.
-
복구 과정에서 데이터의 세밀한 복원이 필요한 경우.