Redis (Remote Dictionary Server)
"키-값" 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈 소스 기반의 비관계형 DBMS(데이터베이스 관리 시스템)
- 모든 데이터를 메모리로 불러와서 처리
- 자료구조의 추상적 자료형도 지원
- 문자열의 리스트
- 문자열의 집합
- 문자열의 정렬된 집합
- 해시
- 속도가 빠르고 사용이 간편해서 웹, 모바일, 게임, IoT 애플리케이션에서 널리 사용
기능
- 인메모리 데이터 구조
- 문자열, 해시, 목록, 집합, 정렬된 집합, 스트림 등을 지원
- 프로그래밍 가능성
- Lua를 사용한 서버 측 스크립팅 및 Redis 함수를 사용한 서버 측 저장 프로시저
- 확장성
- C, C++ 및 Rust에서 사용자 정의 확장을 빌드하기 위한 모듈 API
- 지속성
- 빠른 액세스를 위해 데이터 셋을 메모리에 유지
- 재부팅 및 시스템 오류를 방지하기 위해 영구 저장소에 대한 모든 쓰기를 유지
- 클러스터링
- 해시 기반 샤딩을 통한 수평적 확장성, 클러스터 성장 시 자동 재분할을 통해 수백만 개의 노드로 확장
- 고가용성
- 독립 실행형 및 클러스터형 배포에 대한 페일오버(자동 장애 조치)를 통한 복제
↓ sharding(샤딩)
더보기
Sharding
: 하나의 거대한 데이터베이스나 네트워크 시스템을 여러 개의 작은 조각으로 나누어 분산 저장하여 관리하는 것
Shard (샤드)
: 데이터베이스나 웹 검색 엔진 데이터의 수평 분할
- 각 Shard는 각 데이터베이스 서버 인스턴스에서 보유 (∵ 부하 분산)
↓ 페일오버
더보기
FailOver (장애 극복 기능)
: 컴퓨터 서버, 시스템, 네트워크 등에서 이상이 생겼을 때 예비 시스템으로 자동전환되는 기능
사용 사례
- 실시간 데이터 저장소
- 다용도 인메모리 데이터 구조 사용
- 짧은 대기 시간
- 높은 처리량
- 캐싱 및 세션 스토리지
- 빠른 속도로 데이터베이스 쿼리, 복잡한 계산, API 호출 및 세션 상태를 캐싱
- 스트리밍 및 메시징
- 스트림 데이터 유형은 고속 데이터 수집, 메시징, 이벤트 소싱 및 알림
Redis 스택 사용 사례
- 검색 가능
- 복잡한 집계 및 전체 텍스트 검색
- 문서 데이터베이스
- 도메인을 완전히 모델링하고 캐시를 사용할 필요 없이 JSON 데이터를 효율적으로 쿼리
- 원격 측정
- ID 및 리소스 관리
- 디지털 리소스와 ACL을 그래프로 정의하고 단일 Cypher 쿼리로 실시간으로 권한을 계산
- 벡터 유사성 검색
- 이미지 검색, 추천 엔진 및 자연어 텍스트 처리를 강화하기 위한 쿼리 벡터 임베딩
- 사기 감지
- 그래프 분석, 확률 쿼리, 벡터 검색 및 스트림 처리를 통해 실시간으로 사기를 감지
[ 출처 ]
https://ko.wikipedia.org/wiki/%EB%A0%88%EB%94%94%EC%8A%A4
'CS' 카테고리의 다른 글
CloudFront란? (0) | 2022.04.19 |
---|---|
CDN (콘텐츠 전송 네트워크)이란? (0) | 2022.04.19 |