독자 이득: Redis의 두 가지 영속성 메커니즘인 RDB와 AOF의 내부 동작 원리를 완벽히 이해하고, 서비스 요구사항(정합성 vs 복구 속도)에 최적화된 백업 전략을 설계할 수 있습니다.


1. 개요

Redis의 가장 큰 강점은 '메모리 기반의 속도'이지만, 동시에 가장 큰 불안 요소는 '전원이 꺼지면 데이터가 사라진다'는 점입니다. 이를 해결하기 위해 Redis는 데이터를 디스크에 영구적으로 저장하는 Persistence(영속성) 기능을 제공합니다.

단순히 "저장한다"는 개념을 넘어, 초당 수십만 건의 쓰기가 발생하는 환경에서 어떻게 성능 저하 없이 디스크 I/O를 처리하는지 그 공학적 설계를 Deep Dive 합니다.


2. 문제 정의: "속도를 포기하지 않고 데이터를 지킬 수 있을까?"

엔지니어가 Redis 영속성을 설계할 때 직면하는 기술적 딜레마는 다음과 같습니다.

2.1 디스크 I/O에 의한 성능 저하

메모리 접근(ns 단위)과 디스크 접근(ms 단위)은 속도 차이가 수만 배에 달합니다. 쓰기 명령이 발생할 때마다 디스크에 기록한다면 Redis의 존재 이유인 '초고속 성능'은 사라집니다.

2.2 시스템 장애 시 데이터 유실 범위

서버가 갑자기 다운되었을 때, 마지막으로 저장된 시점과 사고 시점 사이의 데이터 차이(Data Gap)를 어떻게 최소화할 것인가가 운영의 핵심 과제입니다.


3. 해결책: RDB와 AOF의 상호보완적 메커니즘

Redis는 상황에 맞게 선택할 수 있는 두 가지 영속성 옵션을 제공합니다.

3.1 RDB (Redis DataBase): 특정 시점의 스냅샷

RDB는 정해진 간격마다 메모리 전체를 바이너리 파일로 덤프(Dump)하는 방식입니다.

3.2 AOF (Append Only File): 모든 쓰기 명령의 기록