독자 이득: Redis의 두 가지 영속성 메커니즘인 RDB와 AOF의 내부 동작 원리를 완벽히 이해하고, 서비스 요구사항(정합성 vs 복구 속도)에 최적화된 백업 전략을 설계할 수 있습니다.
Redis의 가장 큰 강점은 '메모리 기반의 속도'이지만, 동시에 가장 큰 불안 요소는 '전원이 꺼지면 데이터가 사라진다'는 점입니다. 이를 해결하기 위해 Redis는 데이터를 디스크에 영구적으로 저장하는 Persistence(영속성) 기능을 제공합니다.
단순히 "저장한다"는 개념을 넘어, 초당 수십만 건의 쓰기가 발생하는 환경에서 어떻게 성능 저하 없이 디스크 I/O를 처리하는지 그 공학적 설계를 Deep Dive 합니다.
엔지니어가 Redis 영속성을 설계할 때 직면하는 기술적 딜레마는 다음과 같습니다.
메모리 접근(ns 단위)과 디스크 접근(ms 단위)은 속도 차이가 수만 배에 달합니다. 쓰기 명령이 발생할 때마다 디스크에 기록한다면 Redis의 존재 이유인 '초고속 성능'은 사라집니다.
서버가 갑자기 다운되었을 때, 마지막으로 저장된 시점과 사고 시점 사이의 데이터 차이(Data Gap)를 어떻게 최소화할 것인가가 운영의 핵심 과제입니다.
Redis는 상황에 맞게 선택할 수 있는 두 가지 영속성 옵션을 제공합니다.
RDB는 정해진 간격마다 메모리 전체를 바이너리 파일로 덤프(Dump)하는 방식입니다.
fork()하여 백그라운드에서 스냅샷을 찍습니다. 부모 프로세스는 여전히 메인 루프를 수행하며 성능 저하를 최소화합니다.