최근 Redis를 본격적으로 사용하면서 문득 이런 의문이 들었다.
“RDS는 결국 어디에 데이터를 저장하는 거지? 하드웨어에? 그렇다면 Redis는 메모리 기반이라고 하는데, 무조건 메모리만 쓰는 걸까?” 이런 궁금증을 해결하기 위해 RDS와 Redis의 저장 위치, 기술적 차이, 그리고 Redis의 가장 강력한 장점까지 정리해보았다.
RDS(Relational Database Service)는 AWS, Azure, GCP 같은 클라우드 환경에서 제공하는 관계형 데이터베이스의 관리형 서비스다. 여기서 “RDS가 어디에 데이터를 저장하는가?”라는 질문은 사실상 “RDBMS는 데이터를 어디에 저장하는가”와 동일한 질문이다.
결론부터 말하면 RDS는 데이터를 디스크(스토리지)에 저장한다.
자세히 보면 RDS는 내부적으로 MySQL, PostgreSQL, Oracle 같은 DB엔진을 사용하고 있으며
이들은 데이터를 일반적으로 SSD 기반의 영구 저장 장치(EBS와 같은 블록 스토리지)에 저장한다. 즉, 휘발성인 메모리가 아닌 디스크 기반의 저장소에 데이터를 영구 보존한다.
요약하면 RDS는 디스크에 영구 저장되며 안정성과 정합성을 최우선으로 보장하는 구조이다.
Redis는 대표적인 In-Memory Data Store(인메모리 데이터 저장소)이다. 즉, Redis는 기본적으로 데이터를 메모리(RAM)에 저장한다. 그래서 읽기/쓰기 속도가 극단적으로 빠르다. 반면 메모리는 휘발성이기 때문에 별도의 영속화 설정이 없으면 서버가 꺼질 경우 데이터도 같이 날아간다.
하지만 Redis도 영속성(Persistence)을 지원한다. 주요 방식은 다음 두 가지다
즉, Redis는 기본은 메모리 저장, 필요에 따라 디스크에도 백업을 남길 수 있는 구조다. 하지만 어디까지나 1차 저장소는 메모리이며 디스크는 복구를 위한 보조 역할이다.
내가 생각하는 Redis의 가장 큰 강점은 단연 속도다.
정확히 말하면 데이터를 메모리에 저장함으로써 가능한 초고속 응답성이 Redis의 핵심 경쟁력이다.
일반적인 RDB는 데이터를 디스크에서 읽기 때문에 응답 속도가 보통 수 밀리초(ms) 단위다. 하지만 Redis는 모든 데이터를 메모리(RAM) 에 상주시키고 직접 읽고 쓰기 때문에 응답 속도가 마이크로초(μs) 단위로 훨씬 빠르다. 이 덕분에 초당 수만~수십만 건의 요청(QPS)을 무리 없이 처리할 수 있다. 이러한 성능 특성 덕분에 Redis는 다음과 같은 실시간 처리 시나리오에서 거의 표준처럼 사용된다.
게다가 Redis는 단순한 Key-Value 저장소를 넘어서 List
, Set
, Hash
, Sorted Set
같은 다양한 구조를 지원하고 최근엔 Stream
과 Bloom Filter
까지 지원하며 정말 강력한 범용 실시간 데이터 처리 도구로 진화하고 있다.
이번에 RDS와 Redis의 “저장 위치”를 비교하면서 단순히 “디스크냐, 메모리냐”를 넘어서 기술 철학과 목적 자체가 다르다는 걸 알게 되었다.
따라서 두 시스템은 서로 대체재가 아니라 역할이 분명히 나뉜 보완재로 함께 사용되어야 한다. 예를 들어, 로그인 정보를 Redis에 저장하고 장기 보존이 필요한 회원 정보는 RDS에 저장하는 식이다. 결국 “무엇을 저장할 것인가”에 따라 속도를 최우선으로 할지, 정합성을 최우선으로 할지를 판단하고 그에 따라 Redis와 RDS를 적절히 병행하는 아키텍처 설계가 중요한 포인트라는 걸 배웠다.