[Redis]

xeomina·2022년 8월 11일
0

영상 링크 : https://www.youtube.com/watch?v=mPB2CZiAkKM

Redis란?

Remote Dictionary Server

  • In-Memory Data Structure Store Open Source
  • String, set, sorted-set, hashes, list 등 다양한 타입의 데이터 구조 지원

Redis의 이점

1. 성능

모든 Redis 데이터는 메모리에 상주하므로 데이터 액세스의 대기 시간을 낮추고 처리량을 높인다.

2. 유연한 데이터 구조

Strings, Lists, Sets, Sorted Sets, Hashes, Bitmaps, HyperLogLogs, Streams, Geospatial, JSON

3. 단순성 및 사용 편의성

Redis를 사용하면 더 짧고 단순한 코드로 기존의 복잡한 코드를 작성 가능. 예를 들어 Redis 해시 데이터 구조를 사용하여 단 한 줄의 코드로 데이터를 데이터 스토어로 이동할 수 있다.

4. 복제 및 지속성

Redis는 기본-복제 아키텍처를 사용하며 비동기식 복제를 지원하므로 데이터가 여러 복제 서버에 복제 가능. 따라서 주 서버에 장애가 발생하는 경우 요청이 여러 서버로 분산될 수 있으므로 향상된 읽기 성능과 더 빠른 복구 기능을 제공.

5. 고가용성 및 확장성

Redis는 단일 노드 기본 또는 클러스터링된 토폴로지에서 기본-복제 아키텍처를 제공. 따라서 가용성이 뛰어난 솔루션을 구축하여 일관된 성능과 안정성을 제공.

6. 오픈 소스

Redis는 AWS를 포함한 역동적인 커뮤니티를 통해 지원되는 오픈 소스이다.

Cache

  • Cache는 나중에 요청올 결과를 미리 저장해두었다가 빠르게 서비스를 해주는 것을 의미

Cache 구조 1 - Look asid Cache

  1. 웹 서버는 데이터가 존재하는지 Cache 먼저 확인

  2. Cache에 데이터가 있으면 Cache에서 가져옴

  3. Cache에 없으면 DB에서 읽어옴

  4. DB에서 읽은 데이터를 Cache에 저장

Cache 구조 2 - Write Back

  1. 웹 서버는 모든 데이터를 Cache에 저장

  2. Cache에 특정 시간 동안의 데이터가 저장됨

  3. Cache있는 데이터를 DB에 저장

  4. DB에 저장이 완료된 Cache의 데이터를 삭제

  • Memcached 와 Redis는 둘다 Cache에 많이 사용되지만 Redis는 Collection을 제공

Cf) Collection의 중요성

  1. 개발 편의성 : 랭킹 서버 구현 시 order by 대신 Redis의 Sorted Set을 통하여 빠르게 구현 가능
  1. 개발의 난이도 : 동시에 데이터 트랜잭션 시 Redis는 Atomic하기 때문에 Race Condition이 발생하지 않음

주요 Redis 사용 사례

1. 캐싱

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

  • 데이터베이스 쿼리 결과 캐싱, 영구 세션 캐싱, 웹 페이지 캐싱, 주파수 사용 객체(이미지, 파일, 메타데이터 등) 캐싱

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

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

3. 게임 순위표

요소의 고유성을 제공하면서 점수로 정렬된 목록을 유지하는 Redis Sorted Set 데이터 구조를 사용하면 쉽게 실시간 순위 목록 생성 가능. 타임스탬프를 점수로 사용함으로써 Sorted Set를 통해 시계열 데이터를 처리할 수도 있다.

4. 세션 스토어

Redis는 사용자 프로필, 자격 증명, 세션 상태, 사용자별 개인화 등과 같은 세션 데이터를 관리하는 데 필요한 1밀리초 미만의 지연 시간, 규모 및 복원력을 제공.

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

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

6. 지리 공간

Redis는 대규모의 실시간 지리 공간 데이터를 빠르게 관리할 수 있도록 특별히 구축된 인 메모리 데이터 구조 및 연산자를 제공. Redis를 사용하여 주행 시간, 주행 거리, 안내 표시와 같은 위치 기반 기능을 애플리케이션에 추가할 수 있다.

7. Machine Learning

Redis는 기계 학습 모델을 신속하게 구축, 교육 및 배포할 수 있는 빠른 인 메모리 데이터 스토어를 제공.

8. 실시간 분석

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

0개의 댓글