레디스(Redis)와 멤캐쉬(Memcached) 차이점
안녕하세요. 여러분.
레디스와 맴케쉬의 차이점에 대해 알아보려고 합니다.
이에 대해 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(지리 공간 지원)
레디스에는 대규모 실시간 지리 공간 데이터 작업을 위해 특별히 제작된 명령이 있습니다. 두 요소 (예 : 사람 또는 장소) 사이의 거리 찾기 및 특정 지점의 지정된 거리 내에있는 모든 요소 찾기와 같은 작업을 수행 할 수 있습니다.
댓글 영역