[In-memory cache/ElasticCache] Memcached vs Redis

gyeol·2025년 10월 13일

CS

목록 보기
5/13
post-thumbnail

웹 서비스의 성능을 높이는 가장 효과적인 방법 중 하나는 자주 조회되는 데이터를 메모리에 캐싱하는 것이다. AWS ElasticCache에서 대표적으로 MemcachedRedis 엔진을 지원하는데, 오늘은 이 2가지의 차이점에 대해 알아보고자 한다.

인메모리 캐시?

인메모리 캐시란 데이터를 디스크가 아닌 메모리에 저장해 매우 빠르게 접근할 수 있도록 하는 기술을 말한다.
보통 웹서비스나 애플리케이션은 매 요청마다 데이터베이스에서 데이터를 조회하는데, 이는 디스크 I/O가 발생하기에 속도가 상대적으로 느리며 트래픽이 많을수록 지연과 부하가 커진다.
이를 해결하기 위해 사용하는 방식이 인메모리 캐시이다.

  • RAM 기반 저장

    • 디스크 대신 메모리에 저장하기에 I/O 속도 빠름
  • 휘발성

    • 서버가 재시작되면 메모리에 있던 데이터는 삭제됨
    • 영속성이 필요한 경우 Redis처럼 디스크 백업 기능 함께 사용
  • 자주 조회되는 데이터 저장

    • 같은 요청이 반복될 때마다 데이터베이스에 매번 접근하지 않아도 됨
  • 부하 분산 효과

    • 데이터베이스 쿼리 요청 수가 줄어들어 데이터베이스 부하 크게 감소

Memcached

Memcached는 가볍고 단순한 Key-Value 기반 캐시 서버이다. 데이터를 문자열 형태의 키와 값으로만 저장하며 복잡한 데이터 구조를 지원하지 않는다.
Memcached 방식의 경우 메모리에만 데이터가 저장되기에 서버가 재시작되면 데이터가 사라진다.

set user:1 "철수" 300
get user:1

위 코드의 결과는 철수로 단순 Key-Value 캐시로만 동작한다.

Redis

RedisKey-Value 저장방식을 기본으로 하지만 다양한 데이터 구조를 지원한다. 또한 RDB, AOF 방식으로 데이터를 디스크에 저장할 수 있기에 서버가 재시작되더라도 데이터가 유지되는 영속성 기능을 제공한다.

HMSET user:1 name "철수" age 25 city "서울"
HGETALL user:1
# => name: 철수, age: 25, city: 서울

위의 코드는 자료구조 중 해시를 사용한 것으로, 객체처럼 데이터를 저장하고 조회할 수 있다

차이

항목MemcachedRedis
자료 구조Key-Value (문자열만)다양한 자료 구조 지원 (String, List, Set, Hash, Sorted Set 등)
데이터 저장휘발성 (RAM 기반, 영속성 없음)휘발성 + 영속성 지원 (RDB, AOF)
복제 / 클러스터링복제 불가, 단일 노드 중심복제, 클러스터링, 샤딩 지원
Pub/Sub (메시징)지원 X지원 O
트랜잭션지원 XMULTI/EXEC 명령으로 지원
데이터 크기 관리단순 LRU 삭제LRU 외 다양한 정책 (LFU, TTL 등)
스크립팅불가능Lua 스크립팅 지원
속도매우 빠름빠르지만 약간의 오버헤드 존재
profile
공부 기록 공간 '◡'

0개의 댓글