레디스(Redis)와 멤캐쉬(Memcached) 차이점

프로그래밍/서버2020. 9. 15. 12:33

안녕하세요. 여러분.

레디스와 맴케쉬의 차이점에 대해 알아보려고 합니다.

이에 대해 stackoverflow의 글을 봐도 사실 초보자들에게는 이해가 잘 안되도록 설명이 있습니다.

 

그런데 의외로 aws(아마존 웹 서비스) 홈페이지에 설명이 정말 잘 되어 있습니다. 영어로 설명이 되어 있긴 하지만요 ㅎㅎ (aws.amazon.com/ko/elasticache/redis-vs-memcached/)

부족하지만 한글로 번역해봤습니다.

 

 

레디스(Redis)와 멤캐쉬(Memcached)중 어느걸 사용해야 하나요?

레디스와 맴케쉬는 유명하고 오픈소스이며 인메모리 데이터 저장소입니다. 비록 둘 다 사용하기 쉽고 높은 성능을 내지만 중요한 차이점이 있습니다. 레디스가 다양한 범위의 유즈 케이스(use cases)에 효율적인 풍부한 기능들을 제공하는 반면, 멤캐쉬는 간결성을 가지고 있습니다. 어떤 솔루션이 더 작합한지 알기 위해 당신의 요구사항과 각각의 엔진이 어떤 기능을 제공하는지 파악하세요.

 

  Memcached Redis
Sub-millisecond latency Yes Yes
Developer ease of use Yes Yes
Data partitioning Yes Yes
Support for a broad set of programming languages Yes Yes
Advanced data structures - Yes
Multithreaded architecture Yes -
Snapshots - Yes
Replication - Yes
Transactions - Yes
Pub/Sub - Yes
Lua scripting - Yes
Geospatial support - Yes

Sub-millisecond latency(밀리세컨드 미만의 지연시간)

레디스와 맴케쉬 모두 밀리세컨드 미만의 반응시간을 지원합니다. 메모리에 데이터를 정렬함으로 디스크 기반의 데이터베이스보다 더 빨리 데이터를 읽을 수 있습니다.

Developer ease of use(개발자 사용이 쉬움)

레디스와 맴케쉬 모두 사용하기 쉬운 문법으로 되어있으며 적은 양의 코드로 애플리케이션에 포함시킬 수 있습니다.

Data partitioning(데이터 파티셔닝)

레디스와 멤캐쉬 모두 여러 노드(서버)에 데이터를 나눌 수 있습니다. 이로 인해 (서비스의) 수요가 늘어날 때 서버를 늘려 더 많은 데이터를 처리할 수 있도록 합니다.

Support for a broad set of programming languages(다양한 프로그래밍 언어 지원)

레디스와 맴케쉬 모두 개발자가 사용 가능한 많은 오픈 소스 클라이언트를 가지고 있습니다. 자바, 파이썬, PHP, C, C++, C#, 자바스크립트, Node.js, 루비, Go 등의 언어를 지원합니다.

Advanced data structures(고급 데이터 구조)

레디스는 String 뿐만 아니라 list, set, sorted set, hash, bit array 그리고 hyperloglogs도 지원을 합니다. 프로그램은 이러한 더 고급 데이터를 이용하여 다양한 유즈 케이스를 지원할 수 있습니다. 예를 들어 레디스의 sorted set을 사용하여 게임에서 플레이어의 등급(점수)에 따른 순위를 나타내는 leaderboard를 쉽게 구현할 수 있습니다.

Multithreaded architecture(멀티쓰레드 아키텍쳐)

멤캐쉬는 여러 쓰레드에서 이용가능(multi-threaded)하기 때문에 멀티 프로세싱 코어를 이용할 수 있습니다. 이게 무슨 의미냐면 scailing up(=vertical scailing = 단일 서버의 성능을 향상시키는 것)을 통해 더 많은 일을 할 수 있다는 것입니다.

 

*참고: https://youtu.be/TCP5iPy8xqo?t=1614

Snapshots(스냅샷)

레디스에서 보관 또는 복구에 사용될 수 있는 한 시점의 스냅샷을 디스크에 저장해서 데이터를 보존할 수 있습니다.

Replication(복제)

레디스는 원본 레디스의 여러 복제본을 만들 수 있습니다. 이를 통해 데이터베이스 읽기 성능을 향상 시킬 수 있고 고가용성(highly available)의 클러스트를 구축할 수 있습니다.

Transactions

레디스는 명령어 그룹을 독립된 단일(atomic) 연산으로 실행시키는 트랙젝션(transaction)을 지원합니다.

Pub/Sub(Publish발행/Subscribe구독)

레디스는 고 성능의 채팅방, 실시간 댓글 스트림, 소셜 미디어 피드 그리고 서버 통신에 사용될 수 있는 패턴 매칭을 포함한 Pub/Sub 메세징을 지원합니다. 

Lua scripting

레디스에선 transactional Lua 스크립트를 실행할 수 있습니다. 스크립트는 어플리케이션의 성능을 향상시키고 간결하게 만들 수 있습니다.

Geospatial support(지리 공간 지원)

레디스에는 대규모 실시간 지리 공간 데이터 작업을 위해 특별히 제작된 명령이 있습니다. 두 요소 (예 : 사람 또는 장소) 사이의 거리 찾기 및 특정 지점의 지정된 거리 내에있는 모든 요소 찾기와 같은 작업을 수행 할 수 있습니다.

 

작성자

Posted by 드리머즈

관련 글

댓글 영역