Redis

조성민·2022년 8월 21일
0

database

목록 보기
3/3
post-custom-banner

Redis는 캐시 시스템으로서 캐시와 동일한 기능을 제공하면서 영속성, 다양한 데이터 구조와 같은 부가적인 기능을 지원하고 있습니다. 레디스는 모든 데이터를 메모리에 저장하고 조회 가능한 인메모리 데이터베이스입니다. 데이터를 메모리에 저장하는 빠른 DB라고 생각할 수도 있지만 다른 인메모리 데이터베이스들과의 가장 큰 차이점은 다양한 자료구조입니다.

어떤 데이터를 정렬 할 때, DBMS를 이용한다면 DB에 데이터를 저장하고, 저장된 데이터를 정렬하여 다시 읽어오는 과정은 디스크에 직접 접근을 해야하기 때문에 시간이 걸린다는 단점이 있습니다. 하지만 위와 같이 다양한 자료구조를 지원하게 되면 개발의 편의성이 좋아지고 레디스에서 제공하는 Sorted-Set이라는 자료구조를 이용하여 더 빠르고 간단하게 데이터를 정렬할 수 있습니다.

Redis의 주요 특징

  1. NoSQL

  2. 읽기 성능 증대를 위한 서버 측 복제를 지원
    => Master — Salves 구조로, 여러개의 복제본을 만들 수 있으므로 데이터베이스 읽기를 확장할 수 있기 때문에 높은 가용성(오랜 시간동안 고장나지 않음)

  3. 쓰기 성능 증대를 위한 클라이언트 측 샤딩(Sharding) 지원

  4. 메모리 저장소임에도 불구하고 문자열, 리스트, 해시, 셋, 정렬된 셋과 같은 다양한 데이터형을 지원

  5. 영속성을 지원하는 인메모리 데이터 저장소

  6. 특정시점에 데이터를 디스크에 저장하여 장애 상황시 복구에 사용할 수 있음 ( Snapshots )

  7. 데이터를 메모리에 저장하기 때문에, 디스크 기반의 데이터 베이스보다 빠른 1ms 이하의 응답시간을 제공

  8. 문법적으로 사용하기 쉽고, 개발코드 양 또한 적음

  9. 데이터를 여러 노드에 분산하여 저장시킬 수 있기 때문에 더 많은 데이터를 효과적으로 처리하기 위하여 스케일아웃이 가능 ( 데이터 파티셔닝 )

  10. 다양한 프로그래밍 언어 지원
    => 자바, 파이썬, C, C++, C#, JavaScript, Node.Js, Ruby, Go 그리고 다른 언어들을 지원함
    => 매우 경량화된 절차스크립트 언어인 루아를 지원. eval 명령어를 사용하여 루아스크립트를 실행하고 프로그램을 명료하게하고 성능을 높임

  11. 실시간 위치기반데이터를 지원하기 때문에 두 위치의 거리를 찾거나, 사이에 있는 요소 찾기 등의 작업을 수행할 수 있어서 지도 기반의 고성능 서비스를 제공할 수 있습니다.

Redis의 두 가지 패턴

- Cache-Aside 패턴 ( 빠른 검색용 )

  1. 요청 시 Redis에서 제일 먼저 찾아보고 요청하는 내용이 있으면 Redis에서 꺼내서 바로 응답해주고

  2. Redis에 없을 시 DataBase에서 꺼내서 응답해준 뒤

  3. Redis에 저장해놓음.

  4. 같은 내용을 다시 검색하면 Redis에서 빠르게 꺼내올 수 있게 됨

- Write-Back 패턴 ( 임시 저장용 )

  1. Redis에 저장해놓은 뒤 일정 시간 뒤에 DataBase에 저장하는 방식
    => 주로 저장해야할 데이터 양이 많은 경우 속도가 느린 현상이 발생할 때 사용
profile
풀리면 재밌는 알고리즘
post-custom-banner

0개의 댓글