본문으로 바로가기

Redis란?

category CS 2022. 4. 20. 10:23

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

https://aws.amazon.com/ko/elasticache/what-is-redis/

https://redis.io/

'CS' 카테고리의 다른 글

CloudFront란?  (0) 2022.04.19
CDN (콘텐츠 전송 네트워크)이란?  (0) 2022.04.19