반응형
Redis(Remote Dictionary Storage, 레디스)와 Memcached(맴캐시드)는 유명한 오픈소스인, 인메모리 데이터 저장소이다.
둘 모두 사용하기 쉽고, 고성능을 자랑하지만, 엔진으로 사용할 때 차이를 반드시 고려해야한다.
Memcached는 명료하고 단순함을 위하여 개발된 반면, Redis는 다양한 용도에 효과적으로 사용할 수 있도록 많은 특징을 가지고 개발되었다. 각 엔진들이 제공하는 기능과 필요한 상황을 고려하여 필요에 맞게 선택을 할수 있다.
공통점
- 1ms 이하의 응답대기시간
- 1ms 이하의 응답시간을 제공합니다. 데이터를 메모리에 저장하기 때문에, 디스크 기반의 데이터베이스보다 빠르게 데이터를 읽을 수 있음
- 개발의 용이성
- 문법적으로 사용하기 쉽고, 개발코드 양 또한 적음
- 데이터 파티셔닝
- 데이터를 여러 노드에 분산하여 저장시킬 수 있고, 따라서 수요가 증가할 때 더 많은 데이터를 효과적으로 처리하기 위하여 스케일아웃이 가능
- 다양한 프로그래밍 언어 지원
- 자바, 파이썬, C, C++, C#, JavaScript, Node.Js, Ruby, Go 그리고 다른 언어들을 지원
차이점
Memcached만 의 특징
멀티스레드를 지원하기 때문에, 멀티프로세스코어를 사용할 수 있다. 따라서, 스케일업을 통하여 더욱 많은 작업처리를 할 수 있다.
Redis만 의 특징
- 더욱 다양한 데이터 구조
문자열 뿐만 아니라 List, Set, 정렬된 Set, Hash, Bit 배열, hyperloglogs (매우 적은 메모리로 집합의 개수를 추정할 수 있는 방법)을 지원하고 프로그램에서 위의 다양한 자료구조를 사용할 수 있다. 예를 들어, Sorted Set을 활용하여 게임유저의 상위랭크 정보를 쉽게 제공할 수 있다. - Snapshots
Redis는 특정시점에 데이터를 디스크에 저장하여 파일 보관이 가능하다. 또한, 장애상황시 복구에 사용할 수 있다. - 복제
Master — Salves 구조로, 여러개의 복제본을 만들 수 있다. 따라서 데이터베이스 읽기를 확장할 수 있기 때문에 높은 가용성(오랜 시간동안 고장나지 않음) 클러스터를 제공한다. - 트랜젝션
트랜젝션이란 데이터베이스 상태를 변경시키는 작업 단위를 의미하고, 원자성, 일관성, 독립성, 지속성의 특징을 가지고 있다. Redis는 이러한 특징을 지원한다. - Pub / Sub messaging
Publish(발행)과 Sub(구독)방식의 메시지를 패턴 검색이 가능하고 따라서 높은 성능을 요구하는 채팅, 실시간 스트리밍, SNS 피드 그리고 서버상호통신에 사용할 수 있다. - 루아 스크립트 지원
매우 경량화된 절차스크립트 언어인 루아를 지원한다. eval 명령어를 사용하여 루아스크립트를 실행시킬 수 있습니다. 따라서, 프로그램을 명료하게하고 성능을 높일 수 있다. - 위치기반 데이터 타입 지원
Redis는 실시간 위치기반데이터를 지원한다. 따라서, 두 위치의 거리를 찾거나, 사이에 있는 요소 찾기등의 작업을 수행할 수 있고, 이를 활용하여 맛집, 길찾기 그리고 지도기반의 고성능 서비스를 제공할 수 있다.
반응형
'IT > Knowledge' 카테고리의 다른 글
도커라이징 이란? (10) | 2023.01.19 |
---|---|
nvm이란? (8) | 2023.01.18 |
Test에서 Stub이란? (30) | 2022.12.10 |
kubernetes. Skaffold (32) | 2022.12.07 |
[Beacon] 근거리 데이터 통신 > 비콘 (44) | 2022.11.15 |
댓글