Redis

데이터베이스, 캐시, 메시지 브로커 및 대기열로 사용하는 빠른 오픈 소스 인 메모리 데이터 스토어.

Redis란 무엇입니까?

Remote Dictionary Server를 나타내는 Redis는 빠른 오픈 소스 인 메모리 키 값 데이터 스토어입니다. 이 프로젝트는 Redis의 원 개발자인 Salvatore Sanfilippo 씨가 이탈리아 스타트업의 확장성을 개선하려고 했을 때 시작되었습니다. 거기에서 개발된 Redis는 이제 데이터베이스, 캐시, 메시지 브로커 및 대기열로 사용되고 있습니다.

Redis는 1밀리초 미만의 응답 시간을 제공하여 게임, 광고 기술, 금융 서비스, 의료 서비스 및 IoT 분야와 같은 산업에서 실시간 애플리케이션을 위해 초당 수백만 건의 요청을 지원할 수 있습니다. 오늘날 Redis는 가장 인기 있는 오픈 소스 엔진 중 하나이며 5년 연속으로 Stack Overflow의 ‘가장 사랑 받는’ 데이터베이스로 선정되었습니다. 빠른 성능 덕에 Redis는 캐싱, 세션 관리, 게임, 리더 보드, 실시간 분석, 지형 공간, 라이드 헤일링, 채팅/메시징, 미디어 스트리밍 및 게시/구독 앱에서 주로 사용됩니다.

AWS는 Redis를 실행하기 위한 2가지 완전관리형 서비스를 제공합니다. Amazon MemoryDB for Redis는 Redis와 호환되고 내구성이 뛰어난 인메모리 데이터베이스 서비스로, 초고속 성능을 제공합니다. Amazon ElastiCache for Redis는 마이크로초 대기 시간으로 프라이머리 데이터베이스 및 데이터 스토어의 데이터 액세스를 가속화하는 완전관리형 캐싱 서비스입니다. 또한 ElastiCache는 또 하나의 유명한 오픈 소스 캐싱 엔진인 Memcached에 대한 지원도 제공합니다.

Amazon ElastiCache for Redis를 통해 애플리케이션의 성능을 극대화하는 방법에 대해 자세히 알아보려면 이 온라인 테크 톡을 확인하세요. 

Redis의 이점

성능

모든 Redis 데이터는 메모리에 상주하므로 데이터 액세스의 대기 시간을 낮추고 처리량을 높입니다. 기존 데이터베이스와 달리 인 메모리 데이터 스토어에는 디스크로의 이동이 필요하지 않기 때문에 엔진 대기 시간이 마이크로초 단위까지 줄어듭니다. 그 덕에 인 메모리 데이터 스토어는 더 많은 작업을 처리하고 더 빠른 응답 시간을 지원할 수 있습니다. 따라서 평균 읽기 및 쓰기 작업 속도가 1밀리초 미만이라는 놀랍도록 빠른 성능으로 초당 수백만 건의 작업을 지원할 수 있습니다.

유연한 데이터 구조

제한적인 데이터 구조를 제공하는 다른 키 값 데이터 스토어와 달리 Redis에서는 애플리케이션 요구 사항을 충족할 수 있는 다양한 데이터 구조를 지원합니다. Redis 데이터 유형은 다음과 같습니다.

  • 문자열 – 최대 512MB 크기의 텍스트 또는 바이너리 데이터
  • 목록 – 추가된 순서가 유지되는 문자열 모음
  • Sets – 순서가 유지되지 않는 문자열 모음으로 다른 세트 유형과 교차, 통합 및 비교 가능
  • Sorted Sets – 값을 기준으로 순서가 지정된 세트
  • Hashes – 필드 및 값의 목록을 저장하는 데이터 구조
  • Bitmaps – 비트 수준 작업을 제공하는 데이터 유형
  • HyperLogLogs – 데이터 집합 내 고유 항목을 추정하기 위한 확률적 데이터 구조
  • Streams - 로그 데이터 구조 메시지 대기열
  • Geospatial - 경도/위도 기반 항목 맵, ‘인근’
  • JSON - 숫자, 문자열, 부울, 배열 및 기타 개체를 지원하는 명명된 값의 중첩된 반정형 객체

단순성 및 사용 편의성

Redis를 사용하면 더 짧고 단순한 코드로 기존의 복잡한 코드를 작성할 수 있습니다. Redis에서는 더 짧은 코드를 작성하여 애플리케이션 데이터의 저장, 액세스 및 사용을 지원할 수 있습니다. Redis를 사용하는 개발자는 기존 데이터베이스의 쿼리 언어와 반대되는 단순한 명령 구조를 사용할 수 있습니다. 예를 들어 Redis 해시 데이터 구조를 사용하여 단 한 줄의 코드로 데이터를 데이터 스토어로 이동할 수 있습니다. 해시 데이터 구조가 없는 데이터 스토어에서 유사한 태스크를 수행하려면 형식을 변환하기 위해 더 긴 코드가 필요합니다. Redis에는 데이터를 조작하고 상호 작용할 수 있는 네이티브 데이터 구조와 많은 옵션이 함께 제공됩니다. Redis 개발자는 백 개가 넘는 오픈 소스 클라이언트를 사용할 수 있으며, Java, Python, PHP, C, C++, C#, JavaScript, Node.js, Ruby, R, Go 및 기타 언어를 비롯한 다수의 언어가 지원됩니다.

복제 및 지속성

Redis는 기본-복제 아키텍처를 사용하며 비동기식 복제를 지원하므로 데이터가 여러 복제 서버에 복제될 수 있습니다. 따라서 주 서버에 장애가 발생하는 경우 요청이 여러 서버로 분산될 수 있으므로 향상된 읽기 성능과 더 빠른 복구 기능을 제공할 수 있습니다. Redis는 지속성을 위해 특정 시점 백업(Redis 데이터 집합을 디스크로 복사)를 지원합니다.

Redis는 내구성 및 일관성을 제공하는 데이터베이스로 구축되지 않았습니다. 내구성이 뛰어난 Redis 호환 데이터베이스가 필요하다면 Amazon MemoryDB for Redis를 사용하는 것이 좋습니다. MemoryDB는 데이터를 여러 가용 영역(AZ)에 저장하여 내구성을 높이는 트랜잭션 로그를 사용하므로 프라이머리 데이터베이스로 사용될 수 있습니다. MemoryDB는 개별 캐시, 데이터베이스 또는 기반 인프라 관리에 대한 걱정 없이 Redis API를 사용할 수 있도록 특별히 구축되었습니다.

고가용성 및 확장성

Redis는 단일 노드 기본 또는 클러스터링된 토폴로지에서 기본-복제 아키텍처를 제공합니다. 따라서 가용성이 뛰어난 솔루션을 구축하여 일관된 성능과 안정성을 제공할 수 있습니다. 클러스터 크기를 조정해야 하는 경우, 스케일업, 스케일인 또는 스케일아웃할 수 있는 다양한 옵션이 제공됩니다. 따라서 수요에 맞춰 클러스터를 확장할 수 있습니다.

오픈 소스

Redis는 AWS를 포함한 역동적인 커뮤니티를 통해 지원되는 오픈 소스 프로젝트입니다. Redis는 개방형 표준을 기반으로 하고 오픈 데이터 형식을 지원하며 다양한 클라이언트 세트를 제공하므로 공급업체 종속이나 기술 종속이 없습니다.

캐싱

Redis는 데이터 액세스 지연 시간을 줄이고, 처리량을 늘리며, 관계형 또는 NoSQL 데이터베이스와 애플리케이션의 로드를 줄일 수 있는 가용성이 뛰어난 인 메모리 캐시 구현에 매우 적합합니다. Redis를 사용하면 빈번하게 요청되는 항목을 1밀리초 미만의 응답 시간으로 지원할 수 있고, 고가의 백엔드를 추가하지 않고도 손쉽게 확장하여 더 많은 로드를 처리할 수 있습니다. 데이터베이스 쿼리 결과 캐싱, 영구 세션 캐싱, 웹 페이지 캐싱, 주파수 사용 객체(이미지, 파일, 메타데이터 등) 캐싱은 Redis를 사용한 캐싱의 주요 예입니다.

채팅, 메시징 및 대기열

Redis는 패턴 매칭과 다양한 데이터 구조(목록, 정렬된 세트, 해시 등) 옵션으로 게시/구독을 지원합니다. 따라서 Redis에서는 고성능 채팅방, 실시간 코멘트 스트림, 소셜 미디어 피드 및 서버 상호 통신을 지원할 수 있습니다. Redis 목록 데이터 구조를 사용하면 간단한 대기열을 손쉽게 구현할 수 있습니다. 목록은 자동 작업 및 차단 기능을 제공하므로 신뢰할 수 있는 메시지 브로커 또는 순환 목록이 필요한 다양한 애플리케이션에 적합합니다.

게임 순위표

Redis는 실시간 순위표를 구축하려는 게임 개발자에게 인기 있는 서비스입니다. 요소의 고유성을 제공하면서 점수로 정렬된 목록을 유지하는 Redis Sorted Set 데이터 구조를 사용하기만 하면 됩니다. 실시간 순위 목록을 생성하는 것은 사용자의 점수가 변경될 때마다 이를 업데이트하는 것만큼 쉽습니다. 타임스탬프를 점수로 사용함으로써 Sorted Set를 통해 시계열 데이터를 처리할 수도 있습니다.

세션 스토어

고가용성과 지속성을 갖춘 인 메모리 데이터 스토어인 Redis는 인터넷 규모의 애플리케이션을 위해 세션 데이터를 저장 및 관리하려는 애플리케이션 개발자에게 인기 있는 서비스입니다. Redis는 사용자 프로필, 자격 증명, 세션 상태, 사용자별 개인화 등과 같은 세션 데이터를 관리하는 데 필요한 1밀리초 미만의 지연 시간, 규모 및 복원력을 제공합니다.

다양한 미디어 스트리밍

Redis는 라이브 스트리밍 사용 사례를 지원할 수 있는 빠른 인 메모리 데이터 스토어를 제공합니다. Redis는 CDN이 동시에 수백만 명의 모바일 및 데스크톱 사용자에게 비디오를 스트리밍할 수 있도록 사용자 프로필 및 열람 기록에 대한 메타데이터, 수백만 사용자의 인증 정보/토큰, 매니페스트 파일을 저장하는 데 사용할 수 있습니다.

지리 공간

Redis는 대규모의 실시간 지리 공간 데이터를 빠르게 관리할 수 있도록 특별히 구축된 인 메모리 데이터 구조 및 연산자를 제공합니다. 지리 공간 데이터를 실시간으로 저장, 처리 및 분석하는 GEOADD, GEODIST, GEORADIUS 및 GEORADIUSBYMEMBER와 같은 명령을 사용하면 Redis에서 쉽고 빠르게 지리 공간을 처리할 수 있습니다. Redis를 사용하여 주행 시간, 주행 거리, 안내 표시와 같은 위치 기반 기능을 애플리케이션에 추가할 수 있습니다.

Machine Learning

데이터 중심의 최신 애플리케이션에서 데이터의 막대한 볼륨, 다양성 및 속도를 신속하게 처리하고 의사 결정을 자동화하기 위해서는 기계 학습이 필요합니다. 게임 및 금융 서비스에서 사기 탐지, 게임 기술에서 실시간 입찰, 데이트 및 카풀 서비스에서 매치메이킹과 같은 사용 사례의 경우, 수십밀리초 이내로 라이브 데이터를 처리하고 의사 결정을 내릴 수 있는 성능이 가장 중요합니다. Redis는 기계 학습 모델을 신속하게 구축, 교육 및 배포할 수 있는 빠른 인 메모리 데이터 스토어를 제공합니다.

실시간 분석

Redis는 Apache Kafka, Amazon Kinesis 등과 같은 스트리밍 솔루션에 인 메모리 데이터 스토어로 사용하여 1밀리초 미만의 지연 시간으로 실시간 데이터를 수집, 처리 및 분석할 수 있습니다. Redis는 소셜 미디어 분석, 광고 타게팅, 개인화 및 IoT와 같은 실시간 분석 사용 사례에 적합합니다.

Redis 언어 지원

Redis에서는 다음과 같이 대부분의 주요 프로그래밍 언어 및 프로토콜을 지원합니다.

Python

Java

PHP

Redis 대 Memcached

Redis와 Memcached는 모두 인 메모리, 오픈 소스 데이터 스토어입니다. 고성능 분산 메모리 캐시 서비스인 Memcached는 단순성을 위해 설계된 반면 Redis는 광범위한 사용 사례에 효과적이고 풍부한 기능을 제공합니다. 결정을 내리는 데 도움이 되는 보다 자세한 기능 비교를 확인하려면 보려면 Redis 대 Memcached를 참조하세요. 이들은 MySQL, PostgreSQL, Aurora, Oracle, SQL Server, DynamoDB 등과 같은 관계형 또는 키 값 데이터베이스를 사용하여 성능을 개선합니다.

AWS에서 Redis 사용

AWS는 Redis와 호환되는 2가지 완전관리형 서비스인 Amazon MemoryDB for Redis와 Amazon ElastiCache for Redis를 제공합니다.

Amazon MemoryDB for Redis

Amazon MemoryDB for Redis는 Redis와 호환되고 내구성이 뛰어난 인메모리 데이터베이스 서비스로, 초고속 성능을 제공합니다. 마이크로서비스 아키텍처로 생성된 현대적 애플리케이션을 위해 특별히 구축되었습니다. Amazon MemoryDB는 다중 AZ 트랜잭션 로그를 사용하여 여러 가용 영역(AZ)에 데이터를 내구성 있게 저장함으로써 빠른 장애 조치, 데이터베이스 복구 및 노드 다시 시작을 지원합니다. Amazon MemoryDB를 사용하면 모든 데이터가 메모리 안에 저장되므로 마이크로초 읽기 및 10밀리초 미만의 쓰기 대기 시간과 높은 처리량을 달성할 수 있습니다. 

Amazon MemoryDB for Redis에 대한 자세한 내용은 MemoryDB 문서를 참조하세요.

Amazon ElastiCache for Redis

Amazon ElastiCache for Redis는 클라우드에서 캐시를 손쉽게 설정, 작동 및 크기 조정할 수 있는 완전관리형 캐싱 서비스입니다. ElastiCache for Redis를 사용하면 프라이머리 데이터베이스 및 데이터 스토어의 데이터를 캐싱하여 애플리케이션 속도를 높이고 마이크로초 읽기 및 쓰기 대기 시간을 달성할 수 있습니다. ElastiCache for Redis는 AWS 프리 티어를 통해 무료 평가판으로 사용할 수 있습니다. 

Amazon Elasticache for Redis

가입하기

Amazon MemoryDB 및 Amazon ElastiCache에 액세스합니다.
Amazon Elasticache for Redis 학습

Amazon ElastiCache 시작하기

ElastiCache for Redis 시작하기

Amazon MemoryDB로 구축 시작

사용 설명서를 참조하여 구축을 시작합니다.