DB

[Redis] Redis란?

Raconer 2024. 2. 20. 23:56
728x90

Redis란?

  • In-Memory DB
  • Remote Dictionary Server
  • Storage : 데이터 저장소(데이터 관점)
  • Database : 전통적인 DBMS의 역할을 수행(영속성 관점)
    • 데이터를 저장하고 유실되지 않게 한다
    • Redis는 기본적으로 영속성을 제공하지 않지만 추가적인 백업 방식으로 제공된다.
  • Middleware : 어플리케이션이 이용할 수 있는 유용한 기증을 제공하는 소프트웨어

활용

  • Session Store
  • Cache
  • Limit Rater
  • Job Queue

할수 있는것

  • 아주 빠른 데이터 저장소로 활용
  • 분산된 서버들간의 커뮤니케이션(동기화, 작업 분할 등)
  • 내장된 자료구조를 활용한 기능 구현

In-Memory DB

DB, Database, DBMS?

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

In-Memory DB란?

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

Memory와 Disk의 속도 차이

  READ WRITE 비교
HDD 130 MB/s 120 MB/s  
SSD 500 MB/s 250 MB/s HDD보다 3~4배 빠른
RAM 20,000 MB/s 20,000 MB/s SSD보다 40배 빠름

빠른 속도와 휘발성의 절충

RDBMS -> 영속성 데이터
Redis -> 단기 사용 데이터 (ex. Session DATA, Cache DATA)

  • 용도에 맞게 DB와 Redis를 사용
  • 혼합해서 사용(Cache)
  • Redis의 영속성 확보(백업 등)

Key-Value Store로서 Redis

  • 데이터 저장소의 구조
    • 프로그램 언어에서의 데이터 구조(Array, List, Map, ...)
  • DB의 데이터 모델 관점에서의 구조
    • (네트워크 모델, 계층형 모델(Tree), 관계형 모델, ...)

Key-Value Store 란?

  • 특정 값을 Key로 해서 그와 연관된 데이터를 value로 저장(Map과 같음)
  • 가장 단순한 데이터 저장 방식
  • 단순한 만큼 빠르고 성능이 좋음

장점

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

단점

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

Key-Value Store 활용

  • 언어의 자료구조(Java의 HashMap 등)
  • NoSQL DB( Redis, Riak, AWS DynamoDB)
  • 단순한 구조의 데이터로 높은 성능과 확장성이 필요할 때 사용
728x90

'DB' 카테고리의 다른 글

[Redis] Data Type (Sorted Sets, Bitmaps, HyperLogLog)  (0) 2024.02.23
[Redis] Data Type (Strings, Lists, Sets, Hashes)  (0) 2024.02.23
MongoDB 구성  (0) 2024.02.18
SQL VS NoSQL (MongoDB 공부 전 )  (0) 2024.02.18
Mysql Procedure  (0) 2024.02.03