TIL

24.08.19 TIL - Redis

개발공명 2024. 8. 20. 19:59

오늘 배운 것

  • Redis

 

Redis란

  • Redis는 REmote DIctionary Server의 줄인말
  • Java의 Map과 같은 방식으로 데이터를 저장하는 DB
  • Redis는 가장 대중적인 인메모리 DB
  • Redis는 대표적인 NoSQL DB

 

인메모리 DB = 데이터를 디스크(하드 드라이브나 SSD)가 아닌 시스템의 주 메모리(RAM)에 저장하는 데이터 저장소

 

NoSQL DB = "Not Only SQL"의 약자로, 관계형 데이터베이스(SQL)와는 다른 방식으로 데이터를 저장하고 관리하는 DB

 

 

인메모리 저장소 vs 디스크 기반 저장소 

  인메모리 저장소 디스크 기반 저장소 
데이터 접근 속도 RAM에 저장해 빠름 디스크에 저장해 느림
데이터 영속성 휘발성 메모리 (RAM)에
저장해 영속성 유지 X
디스크에 저장해 영속성 유지 O
용량 RAM이 비싸 용량에 제한 있음 디스크는 상대적으로 저렴해
대용량 데이터 저장 가능
비용 RAM은 디스크에 비해 단위당 비용 높음 디스크는 RAM보다 훨씬 저렴함
확장성 확장이 제한적 대규모 확장이 용이 
복잡성 데이터가 메모리에 있어 시스템 장애 시
복구 메커니즘 필요해 복잡성 증가 
장애 복구가 더 용이하며 많은 DBMS가
내장 백업 및 복구 기능 제공
활용 사례 캐싱, 세션 관리, 실시간 데이터 분석 DB, 파일 시스템, 백업, 아카이빙

 

 

NoSQL DB vs 관계형 DB

  NoSQL DB 관계형 DB 
데이터 모델 고정된 스키마 없거나 유연한 스키마 사용
다양한 형태의 데이터 (키-값, 문서) 저장
데이터를 테이블에 저장
각 테이블은 미리 정의된 스키마 있음 
데이터는 행과 열 형태로 저장
확장성 서버 추가하는 수평 확장이 용이 하드웨어 업그레이드하는 수직 확장이 용이
데이터 일관성 가용성과 분산성 우선해 일관성 희생 가능  트랜잭션을 통해 일관성 보장
쿼리 언어 NoSQL DB마다 고유의 쿼리 언어 사용 SQL 언어 사용
성능 높은 성능  일반적으로 느린 성능
데이터 무결성 무결성 관리 어렵거나 제한적 높은 데이터 무결성 
유연성 데이터 구조가 유연해 높은 유연성 가짐 스키마가 고정되어 있어 낮은 유연성 가짐
사용 사례 비정형 데이터, 실시간 데이터 분석 등 금융 시스템, 재고 관리 등

 

NoSQL

  • 관계형 테이블 사용 X
  • NoSQL 마다 사용 명령어 조금씩 다름
  • NoSQL 마다 데이터 관리 방법, 사용법 다름

 

종류

 

 

Key-Value DB

  • key에 value 저장하는 형태
  • DB에 value 요구할 때 key 전달
  • Redis가 대표적

 

Document DB

  • 객체를 표현하는 Document라는 단위로 데이터 저장
  • 데이터를 객체의 모습 표현한 JSON 형태로 표현
  • JSON, XML등 복잡한 데이터 저장 및 관리
  • MongoDB가 대표적

 

Column-Family DB

  • 각 Row의 Column이 고정 X
  • 필요한 Column을 이름, 데이터, Timestamp와 함께 저장
  • 각 Row마다 Column의 family를 구성해 Column의 데이터 기록
  • cassandra가 대표적

 

 

Redis 활용 사례

Redis는 지연이 적은 읽기, 쓰기 성능 가짐

 

왜냐하면 NoSQL 중에서 Key-Value DB 그리고 인메모리 DB이기 때문

 

일시적인, 변경이 잦은 데이터 다룰 때 많이 활용

 

 

활용 사례

  • Session Clustering
  • Caching
  • 리더보드
  • 방문수 트래킹
  • 좌표 기반 검색 

 

 

'TIL' 카테고리의 다른 글

24.08.21 TIL - session clustering  (0) 2024.08.23
24.08.20 TIL - Redis in Spring  (0) 2024.08.21
24.08.14 TIL - GitHub Actions  (1) 2024.08.16
24.08.13 TIL - Docker  (0) 2024.08.16
24.08.12 TIL - MSA 구성 요소들  (2) 2024.08.13