Redis 퍼시스턴스 (데이터 영속성)
4.1 RDB (Redis Database Snapshot) 개념 및 설정
RDB는 Redis에서 데이터를 스냅샷 형식으로 디스크에 저장하는 방법입니다. 주기적으로 데이터를 덤프 파일로 저장하여, Redis가 재시작되었을 때 마지막으로 저장된 상태를 복원할 수 있게 합니다.
RDB 설정
RDB 스냅샷은 redis.conf
파일에서 save
옵션을 통해 설정할 수 있습니다. 기본 설정은 일정 시간이 지나면 스냅샷을 저장하는 방식입니다.
예시:
save 900 1 # 900초(15분)마다 1개 이상의 키가 변경되면 저장
save 300 10 # 300초(5분)마다 10개 이상의 키가 변경되면 저장
save 60 10000 # 60초마다 10000개 이상의 키가 변경되면 저장
RDB 파일 저장 경로
RDB 파일은 기본적으로 /var/lib/redis/dump.rdb
에 저장됩니다. redis.conf
에서 dir
옵션을 통해 저장 위치를 변경할 수 있습니다.
dir /path/to/your/directory
4.2 AOF (Append-Only File) 개념 및 설정
AOF는 Redis의 모든 쓰기 명령을 로그 파일에 추가하여 데이터를 영속화하는 방법입니다. RDB와 달리 AOF는 데이터를 매번 기록하므로, 더 높은 데이터 보존성을 제공합니다.
AOF 설정
AOF는 appendonly
설정을 통해 활성화할 수 있습니다. 기본적으로 appendonly no
로 되어 있으며, 이를 yes
로 변경하면 AOF가 활성화됩니다.
appendonly yes
appendfsync everysec # 1초마다 AOF 파일에 데이터를 동기화
AOF 파일 저장 경로
AOF 파일은 기본적으로 /var/lib/redis/appendonly.aof
에 저장됩니다. 저장 위치는 redis.conf
에서 dir
옵션을 통해 변경할 수 있습니다.
dir /path/to/your/directory
4.3 RDB vs AOF: 장단점 비교 및 실무 적용 사례
RDB 장점
- 빠른 복원: RDB 파일은 하나의 스냅샷 파일로 저장되므로, Redis가 재시작될 때 빠르게 데이터를 복원할 수 있습니다.
- 낮은 성능 영향: RDB는 주기적으로 데이터 덤프를 수행하므로, Redis의 성능에 미치는 영향이 상대적으로 적습니다.
RDB 단점
- 데이터 유실 가능성: 마지막 스냅샷 이후의 데이터는 유실될 수 있습니다. 즉, Redis가 예기치 않게 종료되면 최근의 변경사항을 잃을 수 있습니다.
AOF 장점
- 높은 데이터 안전성: AOF는 Redis에서 발생한 모든 쓰기 명령을 기록하므로, 데이터가 실시간으로 기록되고 복원됩니다.
- 더 세밀한 제어:
appendfsync
설정을 통해 데이터 동기화 주기를 세밀하게 조정할 수 있습니다.
AOF 단점
- 성능 저하: AOF는 모든 쓰기 명령을 기록하므로, Redis의 성능에 영향을 미칠 수 있습니다.
- 더 큰 디스크 용량: AOF 파일은 시간이 지남에 따라 커질 수 있으며, 이를 관리하기 위해 압축 및 최적화가 필요합니다.
실무 적용 사례
- RDB 사용 사례: 주로 데이터가 자주 변경되지 않는 환경이나, 데이터 유실이 큰 문제가 되지 않는 경우.
- AOF 사용 사례: 데이터가 자주 변경되거나, 데이터 유실을 최소화해야 하는 환경에서 사용.
4.4 AOF 압축 및 성능 최적화
AOF 파일은 시간이 지남에 따라 커지기 때문에, 이를 최적화하고 성능을 개선할 필요가 있습니다. Redis는 BGREWRITEAOF
명령을 사용하여 AOF 파일을 재작성할 수 있습니다.
AOF 압축
AOF 파일을 압축하려면 BGREWRITEAOF
명령을 사용합니다. 이 명령은 현재 AOF 파일을 기반으로 최소화된 새로운 파일을 작성합니다.
redis-cli bgrewriteaof
AOF 성능 최적화
AOF의 성능을 최적화하기 위해서는 appendfsync
설정을 조정할 수 있습니다. 주로 사용되는 설정은 다음과 같습니다.
- everysec: 1초마다 AOF 파일을 동기화하여 성능과 안전성 간의 균형을 맞출 수 있습니다.
- no: 동기화를 하지 않으면 성능은 최고지만 데이터 유실이 발생할 수 있습니다.
- always: 모든 쓰기 명령을 즉시 디스크에 기록하지만 성능에 큰 영향을 미칩니다.
AOF 최적화 설정 예시
appendfsync everysec
위 설정은 1초마다 AOF 파일을 동기화하여 성능과 안정성을 최적화합니다.
AOF 파일 크기 모니터링
AOF 파일이 커지는 것을 방지하려면, Redis는 auto-aof-rewrite-percentage
와 auto-aof-rewrite-min-size
옵션을 통해 자동으로 AOF 파일을 재작성할 수 있도록 설정할 수 있습니다.
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
위 설정은 AOF 파일이 64MB 이상이 되면 파일을 재작성하여 크기를 관리합니다.