본문 바로가기

생각정리/Redis

Redis와 Memcached

Memcached란? 

무료로 사용할 수 있는 오픈소스 분산 메모리 캐싱 시스템

데이터베이스의 부하를 줄여 동적 웹 애플리케이션의 속도개선을 위해 사용되기도 한다.

데이터베이스나 API호출 또는 랜더링 등으로 부터 받아오는 결과 데이터를 작은 단위의 키-값 형태로 메모리에 저장하는 방식

Memcached는 필요량보다 많은 메모리를 가졌을 때, 시스템으로부터 메모리를 사용하고 필요로 하는 메모리가 부족한 경우 이를 더 쉽게 가져다 사용할 수 있도록 만들어 준다.

사용 사례

캐싱 

인메모리 캐시를 구현하여 데이터 엑세스 지연 시간을 줄이고 처리량을 늘리며 백엔드 시스템의 로드를 완화하는 데 매우 적합하다.

데이터베이스 쿼리 결과 캐싱, 세션 캐싱, 웹 페이지 캐싱, API 캐싱, 이미지, 파일 및 메타데이터와 같은 객체 캐싱에 사용된다.

세션 스토어

지속성이 중요하지 않은 경우 인터넷 규모 애플리케이션을 위한 세션 데이터를 저장하고 관리하는 애플리케이션 개발자들 사이에서 널리 사용된다.

Redis와 비교

  Redis Memcached
저장 방식 인메모리 데이터 저장소
개발자 사용 편의성 문법적으로 사용하기 쉽다.
데이터 파티셔닝 데이터를 여러 노드에 분산하여 저장시킬 수 있다.
프로그래밍 언어 지원 자바, 파이썬, C, C++, C#, JavaScript, Node.Js, Ruby, Go 등
스레드 싱글 스레드 멀티 스레드
자료 구조 string, list, set, sorted set, hash, bit, hyperloglogs 등 key-value
스냅샷 특정 시점 스냅샷으로 데이터를 디스크에 보관할 수 있다.  
복제 Master - Salves 구조로, 복제본을 만들수 있다. 고가용성 클러스터를 구축가능  
트랜잭션 명령 그룹을 격리된 원자성 작업으로 실행할 수 있는 트랜잭션을 지원  
Pub / Sub 기능 지원 메시지 브로커, 채팅등 기능 지원  
Lua 스크립트 지원 eval 명령어를 사용하여 루아스크립트를 사용해 성능을 높이고 애플리케이션을 간소화 할 수 있다.  
지형 정보 지원 실시간 위치기반 데이터를 지원  
Redis와 Memcached 둘다 인메모리 데이터 스토어에 사용하기 쉽고 고성능을 제공한다. 차이점으로는 Redis는 캐싱과 데이터관리 말고도 메시지 브로커, 스냅샷 등 다양한 기능들을 사용할 수 있어 좀 더 다양하게 활용을 할 수 있
지만, Memcached는 멀티 스레드이기 때문에 저장된 모든키를 조회하거나 삭제하는 등 많은 데이터를 이용할 때에는 싱글 스레드인 Redis와 속도차이가 많이 나고 스냅샷 기능으로 인해 데이터를 디스크에 저장할 때 매우 오래 걸려 문제가 발생할 수 있어 이점을 유의해서 서비스 장애로 데이터를 복구 여부와 트래픽이 어떤 식으로 몰리는지를 통해 사용할 기술을 선택을 해야겠다.

 

 

 

참고 사이트

https://aws.amazon.com/ko/memcached/

 

 

'생각정리 > Redis' 카테고리의 다른 글

Spring Redis 자료구조 사용  (0) 2024.02.19
레디스 클라이언트 Jedis, Lettuce  (0) 2024.02.18
레디스 설치  (0) 2024.02.08
레디스의 기본 구조  (0) 2024.02.04
레디스란?  (0) 2024.02.03