꿈틀꿈틀 개발일기

Redis 와 Memcached

by jeongminy

공통점

redis를 검색하면 Memcached와 비교를 많이 한다. 

둘 모두 사용하기 쉽지만 어떤 캐시를 사용할지는 장단점을 고려해야한다. 

이 둘의 공통점은 1ms 이하의 응답 대기시간을 가진다

데이터를 메모리에 저장하기 때문에, 디스크 기반의 데이터베이스보다 빠르게 데이터를 읽을 수 있기때문이다.

그리고 문법적으로 사용하기 쉽고, 개발 코드 양 또한 적기때문에 개발의 용이성을 가진다. 

 

차이점

1. 확장성

  • Memcashed의 확장성은 Scale up(vertical)을 통해서 얻을 수 있다.
  • Redis는 Scale out(horizontal)을 통해 얻을 수 있다.

2. 데이터 축출 전략

캐시는 디스크보다 용량이 작은 유한한 리소스를 지니므로, 메모리에 자리잡은 자원을 언젠가 교체해야할 순간들이 올것이다. Memcashed의 경우, LRU(Least Recently Used) 알고리즘만을 채택하고 있지만 Redis의 경우 보다 다양하고 미세한 방법을 제공한다. 

  • No Eviction : 메모리가 부족하면 에러 반환 
  • All Keys LRU : LRU에 근거하여 eviction 
  • Volatile LRU = LRU를 따르되, 만료 시점이 지정된 것들에 한해서 eviction 을 수행 
  • All Keys Random = 랜덤하게 키 삭제 
  • Volatile Random = 랜덤하게 키 삭제하되, 그 대상은 만료 시점이 지정된 것들로 한정 
  • Volatile TTL = TTL 값을 기반으로, 만료 시점이 빨리 도래하는 순서대로 삭제 

3. 다양한 데이터 타입 지원

  • Redis는 String, Hash, Sorted Set, List, Set과 같은 다양한 자료 구조를 제공한다. 최대 512MB의 key와 512MB의 value까지 지원한다.
  • Memcached는 별도의 데이터 타입이 없이, 문자열을 저장할 뿐이다. Memcached는 최대 250B의 Key와 1MB의 value를 지원한다. 

4. 영속성

  • Redis는 RDB 혹은 AOF 기반으로 데이터를 저장할 수 있는 기능이 있다. → 캐시로도 쓰일 수 있고, Data Store로서도 쓰일 수있다. 
  • Memcached는 들고 있는 데이터를 저장할 수 있는 기능이 없다. → 캐시로서의 기능만을 수행할 수 밖에 없다.

5. 트랜잭션

  • Redis는 멀티 명령어를 원자적으로 실행할 수 있는 트랜잭션을 지원한다.
  • Memcached → 지원X

6. Pub / Sub messaging

  • Publish(발행)과 Sub(구독)방식의 메시지를 패턴 검색이 가능하다. 따라서 높은 성능을 요구하는 채팅, 실시간 스트리밍, SNS 피드 그리고 서버상호통신에 사용할 수 있다.
  • Memcached → 지원X

7. 스레드

  • redis는 싱글 스레드로 처리되기 때문에 원자성은 보장되지만 여러 개의 명령어는 처리 못한다. 따라서 시간 복잡도를 고려하며 명령어를 사용해야 한다. 또한, 싱글 스레드로 동작하기 때문에 동시에 처리할 수 있는 명령어의 갯수는 한번에 하나이다.
  • Memcached는 멀티스레드를 지원하기 때문에, 멀티프로세스코어를 사용할 수 있다. 따라서, 스케일업을 통하여 더욱 많은 작업처리를 할 수 있다. 

 

출처 : https://baebalja.tistory.com/602

'📖 Study' 카테고리의 다른 글

OAuth 이해하기  (0) 2024.03.05
Dummy data 생성하기  (0) 2024.02.19
AWS | S3 를 이용한 파일 업로드 기능 with Kotlin, swagger  (2) 2024.01.26

블로그의 정보

꿈틀꿈틀 개발일기

jeongminy

활동하기