Remote Dictionary Server의 약어인 Redis는 데이터베이스, 캐시, 메시지 브로커 및 대기열로 사용하는 빠르고 오픈 소스, 인 메모리 키-값 데이터 스토어입니다. 이 프로젝트는 Redis의 원 개발자인 Salvatore Sanfilippo 씨가 이탈리아 스타트업의 확장성을 높이려 노력하는 과정에서 시작되었습니다. 현재 Redis는 1밀리초 미만의 응답 시간을 제공하므로 게임, 광고 기술, 금융 서비스, 의료 서비스 및 IoT 분야에서 실시간 애플리케이션을 위해 초당 수백만 건의 요청을 지원할 수 있습니다. Redis는 캐싱, 세션 관리, 게임, 리더 보드, 실시간 분석, 지형 공간, 라이드 헤일링, 채팅/메시징, 미디어 스트리밍 및 게시/구독 앱에서 주로 사용됩니다.
Redis는 데이터를 디스크에 저장하는 데이터베이스와는 달리 모든 데이터를 메모리에 저장한다. 이를 통해 데이터를 가져오기 위한 디스크 액세스 시간을 줄일 수 있다. Redis는 다양한 데이터 구조, 고가용성, 지리 공간, Lua 스크립팅, 트랜잭션, 온디스크 지속성 및 클러스터 지원을 제공하므로 실시간 앱을 좀 더 쉽게 구축할 수 있다.
Redis의 이점
인 메모리 데이터 스토어
데이터 대부분을 디스크 또는 SSD에 저장하는 PostgreSQL, Cassandra, MongoDB 등 다른 데이터베이스와는 달리 모든 Redis 데이터는 서버의 주 메모리에 상주합니다. 작업을 위해 대부분 디스크까지 왕복해야 하는 전통적인 디스크 기반 데이터베이스와 대조적으로, Redis와 같은 인 메모리 데이터 스토어는 이와 같은 단점이 없습니다. 따라서 더 많은 작업을 처리하고 더 빠른 응답 시간을 지원할 수 있습니다. 따라서 평균 읽기 또는 쓰기 작업 속도 1밀리초 미만이라는 놀랍도록 빠른 성능으로 초당 수백만 건의 작업을 지원할 수 있습니다.
유연한 데이터 구조
제한적인 데이터 구조를 제공하는 단순한 키 값 데이터 스토어와 달리 Redis에서는 애플리케이션 요구 사항을 충족할 수 있도록 다양한 데이터 구조를 지원합니다. Redis 데이터 유형은 다음과 같습니다.
- 문자열 – 최대 512MB 크기의 텍스트 또는 바이너리 데이터
- 목록 – 추가된 순서가 유지되는 문자열 모음
- 세트 – 순서가 유지되지 않는 문자열 모음으로 다른 세트 유형과 교차, 통합 및 비교 가능
- 정렬된 세트 – 값을 기준으로 순서가 지정된 세트
- 해시 – 필드 및 값의 목록을 저장하는 데이터 구조
- 비트맵 – 비트 수준 작업을 제공하는 데이터 유형
- HyperLogLogs – 데이터 세트 내 고유 항목을 추정하기 위한 확률적 데이터 구조
단순성 및 사용 편의성
Redis에서는 더 짧은 코드 작성으로도 애플리케이션의 데이터를 저장, 액세스 및 사용할 수 있으므로 코드가 간소화됩니다. 예를 들어 애플리케이션의 데이터가 해시맵에 저장되어 있는데 이를 데이터 스토어에 저장하려는 경우, Redis 해시 데이터 구조를 사용하면 간단하게 데이터를 저장할 수 있습니다. 해시 데이터 구조가 없는 데이터 스토어에서 유사한 작업을 수행하려면 형식을 변환하기 위해 더 긴 코드가 필요합니다. Redis에는 데이터를 조작하고 상호 작용할 수 있는 네이티브 데이터 구조와 많은 옵션이 함께 제공됩니다. Redis 개발자는 백 개가 넘는 오픈 소스 클라이언트를 사용할 수 있으며, Java, Python, PHP, C, C++, C#, JavaScript, Node.js, Ruby, R, Go를 비롯한 다수의 언어가 지원됩니다.
복제 및 지속성
Redis는 기본-복제 아키텍처를 사용하며 비동기식 복제를 지원하므로 데이터가 여러 복제 서버에 복제될 수 있습니다. 따라서 주 서버에 장애가 발생하는 경우 요청이 여러 서버로 분산될 수 있으므로 향상된 읽기 성능과 더 빠른 복구 기능을 제공할 수 있습니다. Redis는 지속성을 위해 특정 시점 백업(Redis 데이터 세트를 디스크로 복사)를 지원합니다.
높은 가용성 및 확장성
Redis는 단일 노드 기본 또는 클러스터링된 토폴로지에서 기본-복제 아키텍처를 제공합니다. 따라서 가용성이 뛰어난 솔루션을 구축하여 일관된 성능과 안정성을 제공할 수 있습니다. 클러스터 크기를 조정해야 하는 경우, 스케일업, 스케일인 또는 스케일아웃할 수 있는 다양한 옵션이 제공됩니다. 따라서 수요에 맞춰 클러스터를 확장할 수 있습니다.
확장성
Redis는 역동적인 커뮤니티에서 지원하는 오픈 소스 프로젝트입니다. Redis가 개방형 표준을 기반으로 하고 오픈 데이터 형식을 지원하며 다양한 클라이언트 세트를 제공하므로 공급업체 종속이나 기술 종속이 없습니다.