DBMS

Redis(Remote Dictionary Server) 란?

ride-dev 2023. 11. 14. 16:46

Redis

1. Redis 란?

Remote Dictionary Server를 나타내는 용어입니다.

빠른 오픈 소스 인 메모리 키 값 데이터 스토어 입니다.

db, cache 등으로 사용되고 있습니다.

1 밀리초 미만의 응답시간을 제공하여 초당 수백만 건의 요청을 지원할 수 있습니다.


2. 이점

1. 성능

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

2. 유연한 데이터 구조

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

 

String - 문자열, 최대 512MB 크기의 텍스트 또는 바이너리 데이터

Lists - 리스트, 추가된 순서대로의 문자열 모음

Sets - 세트, 다른 세트 유형을 교차, 통합, 비교할 수 있는 기능을 갖춘, 순서가 지정되지 않은 문자열 모음

Sorted Sets - 정렬된 세트, 값으로 정렬된 세트

Hashes - 해시, 필드 및 값 목록을 저장하기 위한 데이터 구조

Bitmaps - 비트맵, 비트 수준 작업을 제공하는 데이터 유형

HyperLogLogs -데이터 세트의 고유 항목을 추정하기 위한 확률적 데이터 구조

Streams - 스트림, 로그 데티터 구조 메시지 큐

Geospatial - 지리, 경도/위도 기반 인근 지도

JSON - 숫자, 문자열, 참, 배열 및 기타 개체를 지원하는 명명된 값의 중첩된 반구조적 개체

3. 단순성과 사용 편의성

Redis(Remote Dictionary Server)를 사용하면 더 적고 간단한 줄로 전통적으로 복잡한 코드를 작성할 수 있습니다.

애플리케이션에서 데이터를 저장, 액세스 및 사용하는 데 필요한 코드 줄을 줄일 수 있습니다.

기존 DB의 쿼리 언어와 달리 간단한 명령 구조를 사용할 수 있습니다.

100개 이상의 오픈 소스 클라이언트를 사용할 수 있으며, 다양한 언어를 지원합니다.

4. 복제 및 지속성

Redis(Remote Dictionary Server)는

기본 복제본 아키텍처를 사용하고 데이터를 여러 복제 서버에 복제할 수 있는 비동기식 복제를 지원합니다.

이는 향상된 읽기 성능(요청이 서버 간에 분할 될 수 있음)을 제공하고 기본 서버에 중단이 발생할 때 더 빠른 복구를 제공합니다. 지속성을 위해 Redis는 특정 시점 백업을 지원합니다.(Redis 데이터 세트를 디스크에 복사)

5. 고가용성 및 확장성

Redis(Remote Dictionary Server)는 단일 노드 기본 또는 클러스터형 토폴로지에서 기본 복제본 아키텍처를 제공합니다. 이를 통해 일관된 성능과 안정성을 제공하는 고가용성 솔루션을 구축할 수 있습니다. 클러스터 크기를 조정해야 하는 경우 수직 확장 및 축소를 위한 다양한 옵션도 사용할 수 있습니다. 이를 통해 요구 사항에 따라 클러스터를 확장할 수 있습니다.

6. 오픈소스

개방형 표준 기반이고 개방형 데이터 형식을 지원하며 풍부한 클라이언트 세트를 갖추고 있으므로 공급업체나 기술에 제약이 없습니다.


3. 주요 사용 사례

1. 캐싱

Redis는 데이터 액세스 지연 시간을 줄이고, 처리량을 늘리며, 관계형 또는 NoSQL 데이터베이스 및 애플리케이션의 로드를 완화하기 위해 고가용성 인 메모리 캐시를 구현하는 데 탁월합니다.

Redis는 자주 요청되는 항목을 밀리초 미만의 응답 시간으로 제공할 수 있으며 비용이 많이 드는 백엔드를 늘리지 않고도 더 높은 로드에 맞게 쉽게 확장할 수 있습니다.

데이터베이스 쿼리 결과 캐싱, 영구 세션 캐싱, 웹페이지 캐싱, 이미지, 파일, 메타데이터와 같이 자주 사용되는 개체 캐싱은 모두 Redis를 사용한 캐싱의 사례입니다.

2. 채팅,메시지 및 대기열

Redis는 패턴 일치와 목록, 정렬된 집합, 해시와 같은 다양한 데이터 구조를 갖춘 Pub/Sub를 지원합니다. 이를 통해 Redis는 고성능 채팅방, 실시간 댓글 스트림, 소셜 미디어 피드 및 서버 상호 통신을 지원할 수 있습니다.

Redis List 데이터 구조를 사용하면 경량 대기열을 쉽게 구현할 수 있습니다.

List는 원자성 작업과 차단 기능을 제공하므로 신뢰할 수 있는 메시지 브로커나 순환목록이 필요한 다양한 애플리케이션에 적합합니다.

3. 게임 리더보드

Redis는 실시간 순위표를 구축하려는 게임 개발자들 사이에서 인기 있는 선택입니다. 사용자 점수에 따라 정렬된 목록을 유지하면서 요소의 고유성을 제공하는 Redis Sorted Set 데이터 구조를 사용하면 됩니다.

실시간 순위 목록을 만드는 것은 사용자 점수가 변경될 때마다 업데이트 하는 것만큼 쉽습니다. 정렬된 집합을 사용하면 타임스탬프를 점수로 사용하여 시계열 데이터를 처리할 수도 있습니다.

4. 세션 스토어

고가용성과 지속성을 갖춘 인메모리 데이터 저장소인 Redis는 인터넷 규모 애플리케이션의 세션 데이터를 저장고 관리하기 위해 애플리케이션 개발자들 사이에서 인기 있는 선택입니다.

Redis는 사용자 프로필, 자격 증명, 세션 상태 및 사용자별 개인 설정과 같은 세션 데이터를 관리하는 데 필요한 밀리포 미만의 대기시간, 규모 및 복원력을 제공합니다.

5. 다양한 미디어 스트리밍

Redis는 라이브 스트리밍을 지원하기 위해 빠른 인 메모리 데이터 저장소를 제공합니다.

Redis는 사용자 프로필 보기 및 보기 기록에 대한 메타데이터, 수백만 명의 사용자에 대한 인증 정보/토큰, 매니페스트 파일을 저장하여 CDN이 한 번에 수백만 명의 모바일 및 데스크톱 사용자에게 비디오를 스트리밍할 수 있도록 하는 데 사용할 수 있습니다.

6. 지리공간

Redis는 규모와 속도에 맞춰 실시간 지리공간 데이터를 관리하기 위해 특별히 구축된 인메모리 데이터 구조와 연산자를 제공합니다. 지리공간 데이터를 실시간으로 저장, 처리 및 분석하는 GEOADD, GEODIST, GEORADIUS, GEORADISBYMEMBER와 같은 명령어를 사용하면 Redis를 통해 지리공간을 쉽고 빠르게 얻을 수 있습니다.

Redis를 사용하여 운전 시간, 운전 거리, 관심지점 등의 위치 기반 기능을 애플리케이션에 추가할 수 있습니다.

7. 머신러닝

최신 데이터 기반 애플리케이션에는 엄청난 양, 다양성, 속도의 데이터를 신속하게 처리하고 의사 결정을 자동화하기 위한 머신 러닝이 필요합니다. 게임 및 금융 서비스의 사기 탐지, 광고 기술의 실시간 입찰, 데이트 및 차량 공유의 매치메이킹과 같은 사례에서는 실시간 데이터를 처리하고 수십 밀리초 이내에 결정을 내리는 능력이 가장 중요합니다.

Redis는 머신 러닝 모델을 신속하게 구축, 교육 및 배포할 수 있는 빠른 인 메모리 데이터 저장소를 제공합니다.

8. 실시간 분석

Redis는 Apache Kafka 및 Amazon Kinesis와 같은 스트리밍 솔루션과 함께 인 메모리 데이터 저장소로 사용되어 밀리초 미만의 지연 시간으로 실시간 데이터를 수집, 처리 및 분석할 수 있습니다.

Redis는 소셜 미디어 분석, 광고 타겟팅, 개인화, IoT 등 실시간 분석 사용 사례에 좋은 선택지입니다.


4. 언어 지원

Redis는 다음을 포함하여 대부분의 주요 프로그래밍 언어 및 프로토콜을 지원합니다.

 

Python

Perl

C/C#/C++

Java

Go

Javascript

PHP

Ruby

Node.js


5. 참조

https://redis.io/docs/

 

Documentation

Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache, and message broker

redis.io

https://aws.amazon.com/ko/redis/

 

Redis: 인 메모리 데이터 스토어 사용 방법 및 필요성

모든 Redis 데이터는 메모리에 상주하므로 데이터 액세스의 대기 시간을 낮추고 처리량을 높입니다. 기존 데이터베이스와 달리 인 메모리 데이터 스토어에는 디스크로의 이동이 필요하지 않기

aws.amazon.com


6. 마무리

다양한 도구를 사용할 수 있으면, 필요할 때 적용할 수 있을 것입니다.

이번에 Redis를 활용하여 데이터를 캐싱하면서 Redis에 대해 알아봤습니다.

다음에는 어떻게 적용하고 활용할 수 있을지에 대해 공부해보겠습니다.

728x90

'DBMS' 카테고리의 다른 글

[Tibero] CentOS에 Tibero6 설치  (0) 2024.08.15