DB/이론

[Cache] Memcached vs Redis 차이

yubi5050 2022. 11. 22. 22:22

Memcached 와 Redis 란?

Memcahced와 Redis는 Key-value 형태의 인-메모리 기반의 캐싱 시스템으로, 캐시 레이어로서 DB의 부하를 줄여주며, 주로 웹 어플리케이션의 응답 속도 개선을 위해 사용된다. 

 

두가지 모두 사용하기 어렵지 않지만, Memcached는 Cache 서비스를 위해 설계된 반면, Redis는 좀더 다양한 용도에 효과적으로 사용 할 수 있도록 설계되었다는 차이가 있다.

 

 

Memcached 특징

  • 웹 서버에서 기존에 할당된 캐시 메모리를 초과시, 전체 할당된 메모리에서 유동적으로 사용 가능
  • Data Evicion 전략 : LRU (Least Recently Used) 알고리즘만 사용
  • Data Structure : String 형태만 지원
  • Persistance : Memcached는 Cache로 들고 있는 데이터를 저장할 수 없음
  • Thread : Multi-Thread 형태
  • Scalability : 멀티 스레드 기반의 멀티 프로세스 코어 사용 가능하여 Scale-up 의 방향의 확장 가능
  • Replication : 데이터 복제 불가능
  • Transaction : 트랜잭션 지원 X

 

Memcahced를 사용 전 후 에 따른 메모리 운영 방식 차이다. 

출처 : https://brownbears.tistory.com/43

 

Redis 특징

  • Data Evicion 전략 : LRU (Least Recently Used)외에도 voliatile-LRU(LRU + 만료시점이 지정된 것 우선), allkeys-random (무작위 제거), Volatile TTL (TTL 값 기반 만료시점이 빠른 것) 등의 보다 세세한 Policy 제공
  • Data Structure : String, Hash, Sorted Set, List, Set과 같은 다양한 자료 구조 지원
  • Persistance : Redis는 Cache로 들고 있는 데이터를 특정 시점에 저장 할 수 있음 (=Snapshots)
  • Thread : Single-Thread 형태로 1번에 1개의 명령어만 수행
  • Scalability : 데이터 파티셔닝이 가능해 Scale-out 으로 확장하여 데이터 효과적으로 처리 가능
  • Replication : 데이터 복제 가능
  • Transaction : 트랜잭션의 원자성, 일관성, 독립성, 지속성의 4원칙을 지킴

 

Redis는 Cache 이외에도, Pub/Sub Message 시스템을 통해 Chatting이나, Streaming 등의 서비스에 사용 될 수 있다.

 

 

 

참고 문헌

https://chrisjune-13837.medium.com/redis-vs-memcached-10e796ddd717 // [Cache] Redis vs. Memcached

https://luran.me/359 // Memcached vs Redis 특징

https://brownbears.tistory.com/43 // Memcached, Redis

https://docs.djangoproject.com/en/4.1/topics/cache/ // Django Memcached & Redis Caching