797 단어
4 분
Redis와 Memcached의 차이

Redis와 Memcached 비교#

NOTE

두 기술 모두 인메모리(In-memory) 키-값(Key-Value) 저장소로서, 응답 속도가 매우 빠름 주로 데이터베이스의 부하를 줄이고 성능을 높이기 위한 캐시(Cache) 용도로 사용됨


Memcached (멤캐시드)#

특징#

  • 멀티스레드 (Multi-thread): 멀티스레드 아키텍처를 지원하여 멀티코어 CPU를 효율적으로 활용할 수 있음
  • 단순한 데이터 구조: 오직 문자열(String) 타입만 저장 가능함 (최대 1MB)
  • 휘발성: 데이터 영구 저장이 불가능하며, 프로세스가 종료되거나 서버가 꺼지면 데이터가 모두 사라짐
  • 단순성: 기능이 적고 단순하여 설정과 관리가 비교적 쉬움

주요 용도#

  • HTML 조각이나 단순한 객체 캐싱
  • 데이터 복구가 필요 없거나 재생성 비용이 낮은 세션 관리
  • 멀티코어 환경에서 수직적 확장(Scale-up)이 필요한 경우

Redis (Remote Dictionary Server)#

특징#

  • 싱글스레드 (Single-thread): 기본적으로 싱글스레드로 동작하여 원자성(Atomicity)을 보장함 (단, Redis 6.0부터 I/O 처리는 멀티스레드 지원)
  • 다양한 자료구조: String 외에도 List, Set, Hash, Sorted Set(ZSet), Bitmap, HyperLogLog 등 다양한 자료구조 지원
  • 지속성 (Persistence):
    • RDB (Snapshot): 특정 시점의 데이터를 디스크에 저장
    • AOF (Append Only File): 모든 쓰기 연산을 로그로 저장하여 재시작 시 복구 가능
  • 고급 기능: Pub/Sub(메시징), 트랜잭션, 루아 스크립트, Geo(지리 정보) 등 지원

주요 용도#

  • 복잡한 캐싱 (예: 정렬된 랭킹 정보)
  • 메시지 브로커 (메시지 큐)
  • 실시간 채팅 및 알림 시스템 (Pub/Sub)
  • 세션 스토어 (서버가 죽어도 데이터 보존 필요 시)

상세 비교표#

비교 항목MemcachedRedis
스레드 모델멀티스레드싱글스레드 (I/O는 멀티 지원)
자료구조문자열(String)String, List, Set, Hash, Sorted Set 등
데이터 저장(Persistence)지원 안 함 (휘발성)RDB, AOF 지원 (디스크 저장 가능)
복제(Replication)지원 안 함 (클라이언트 측 분산)Master-Slave 복제 지원
클러스터링클라이언트 측에서 처리Redis Cluster 자체 지원
속도단순 문자열 처리는 매우 빠름전반적으로 빠르며 기능이 다양함
메모리 관리Slab Allocator (파편화 적음)Jemalloc (다양한 사이즈 처리)

결론: 언제 무엇을 쓸까?#

  • Memcached를 써야 할 때:
    • 데이터 구조가 단순(문자열)하고 용량이 작은 경우
    • 데이터가 날아가도 상관없는 순수 캐시 용도인 경우
    • 멀티코어 CPU를 최대한 활용해 트래픽을 처리해야 하는 경우
  • Redis를 써야 할 때:
    • 리스트, 셋, 랭킹(Sorted Set) 등 복잡한 데이터 처리가 필요한 경우
    • 서버가 재시작되어도 데이터가 보존되어야 하는 경우
    • 여러 서버 간의 데이터 복제 및 고가용성(HA) 구성이 필요한 경우
    • 메시지 큐나 Pub/Sub 기능이 필요한 경우
Redis와 Memcached의 차이
https://devlog.jpstudy.org/posts/2025/cs/redis_memcahed/
저자
SY
게시일
2025-08-27
라이선스
CC BY-NC-ND 4.0