본문 바로가기
Redis

Redis 소개와 특징

by 이상한나라의개발자 2023. 12. 11.

Redis 정의 및 특징

 

2009년 살바토레 산필리포 가 개발 하였으며 오픈소스와 이후 기술적으로 대중적으로 인기를 얻었습니다.

Rdis는 인메모리 구조 저장소로, 데이터베이스, 캐시 및 메시지 브로커로 사용될 수 있습니다.

 

  • Remote Dictionary Server
  • Storage : 데이터 저장소 ( 데이터 관점 )
  • Database : 전통적인 DBMS의 역할을 수행 ( 영속성 관점 )
  • Middleware : 어플리케이션이 이용할 수 있는 유용한 기능을 제공하는 소프트웨어
  • 인메모리 저장 : 모든 데이터는 메모리에 저장되어 빠른 읽기 및 쓰기 속도를 제공합니다. 필요한 경우, 디스크에 데이터를 지속적으로 저장할 수도 있습니다.
  • 데이터 구조 : Redis는 단순한 키-값 저장소 입니다. 리스트, 세트, 해시, 비트맵, 하이퍼로그 등과 같은 다양한 데이터 구조를 제공합니다.
  • 지속성 : 필요에 따라 데이터를 디스크에 저장하도록 구성할 수 있어서, 재시작 후에도 데이터 손실의 위험이 줄어 듭니다.
  • 복제 : 주-복제(replication) 모드를 통해 데이터의 여러 복사본을 유지할 수 있어 가용성과 내구성을 높을 수 있습니다.
  • 파타셔닝 : 데이터를 여러 서버에 분산 시킬수 있어서, 대용량 데이터와 트래픽을 처리하는데 도움이 됩니다.
  • 트랜잭션 : 명령 그룹을 원자적으로 실행할 수 있습니다.
  • 지원하는 클라이언트 : 대부분의 인기 있는 프로그래밍 언어에 대해 클라이언트 라이브러리가 있습니다.

 

Redis로 할 수 있는 것 

 

  • 캐시 : 인기 있는 사용 사례 중 하나로 높은 I/O 작업을 줄이기 위해 자주 사용되는 데이터를 메모리에 저장합니다.
  • 세션저장 : 웹 세션 정보를 빠르게 저장하고 검색합니다.
  • 메시지 브로커 : "PUB/SUB" 기능을 이용하여 메시지를 전송하고 구독할 수 있습니다.
  • 실시간 분석 : 높은 처리량과 속도 때문에, Redis는 실시간 분석에서 데이터를 처리하는데 유용합니다.
  • 리더보드 및 카운팅 : 게임 리더보드나 실시간 통계와 같은 곳에서 빠르게 데이터를 업데이트 하고 검색하는데 사용됩니다.
  • 장애복구 : 지속성 기능을 이용하여 중요 데이터의 백업 복사본을 만들 수 있습니다.
  • 공간 정보 분석 : "GEO" 명령어를 사용하여 위치 기반의 기능을 구현할 수 있습니다.
  • 이벤트 및 로그 수집 : 빠른 쓰기 속도를 활용하여 대용량의 로그 또는 이벤트 데이터를 수집 합니다.

 

DataBase

  • 데이터를 읽고 쓸 수 있는 기능을 제공하는 소프트웨어
  • 어플리케이션이 데이터 저장을 간단히 처리할 수 있게 합니다.
  • 관심사의 분리, 계층화 

 

 

In-Memory DB 로서의 Redis

 

  • 데이터를 디스크에 저장하지 않습니다.
  • 휘발성인 RAM에 저장
  • 빠른속도

DB와 래디시

 

 

메모리와 Disk의 속도 차이

 

  • 용도에 맞게 DB와 Redis 활용
  • 혼합해서 사용 ( Cache ), 세션 저장
  • Redis의 영속성 확보 ( 백업 등 )

 

db와 래디시의 사용 방식

 

Key - Value Store로서의 Redis

 

Redis는 Key - Value 로 데이터가 저장 됩니다. 프로그래밍 언어 관점에서는 List, Map... 이며, DB의 데이터 모델 관점에서의 구조는 네트워크 모델, 계층형 모델 ( Tree ), 관계형 모델.. 로 연관지어 볼 수 있습니다.

 

key
(ex : name)    ------------------------------------------>
Jay
(key : name)
Seoul
(key : address)
....

 

Key-value 구조의 장점

 

  • 키로 접근한다는 단순성에서 오는 쉬운 구현과 사용성
  • Hash를 이용해 값을 바로 읽으므로 속도가 빠름 ( 추가 연산 필요없음 )
  • 분산 환경에서의 수평적 확정성

 

Key-value 구조의 단점

 

  • Key를 통해서만 값을 읽을 수 있음
  • 범위 검색 등의 복잡한 질의가 불가능

 

Key-value 스토어의 활용

 

  • 언어의 자료구조 ( Java의 HashMap 등 ) 와 사용법이 동일하다고 보면 된다.
  • NoSQL DB ( Redis, Riak, AWS DynamoDB ) -> key value 구조
  • 단순한 구조의 데이터로 높은 성능과 확장성이 필요할 때 사용
  • 과거에는 Session Store, Cache, Limit Rater, Job Queue 등과 같은 인메모리 기술을 별로도 구현해야 했던 공통적인 기능들을 Redis를 활용하면 쉽게 구현이 가능합니다.

'Redis' 카테고리의 다른 글

Redis 리더보드 만들기  (0) 2023.12.11
서비스 속도를 높이는 캐시 레이어  (0) 2023.12.11
분산 환경에서 세션 스토어 만들기  (2) 2023.12.11
Redis 설치 및 문법  (1) 2023.12.11
RDBMS & NoSQL & Redis  (0) 2023.12.11