본문 바로가기

CS/데이터베이스

Redis란?

728x90

Redis 란?

  • Key, Value 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈 소스 기반의 비관계형 데이터베이스 시스템
  • 데이터베이스, 캐시, 메세지브로커로 사용되며 인메모리 데이터 구조를 가진 저장소 입니다.Cache Server란?
  • 데이터베이스가 있는데도 Redis라는 인메모리 데이터 구조 저장소를 사용하는 이유(?)
  • 인메모리 데이터베이스가 아니라면 사용자가 많아 질 수록 부하가 느려집니다. ( HDD,SDD 접근 )
  • 과부하를 방지하기위하여 캐시 서버(Redis)를 도입한다.Look aside cache
  • 클라이언트가 데이터를 요청
  • 웹서버는 데이터가 존재하는지 Cache 서버에 확인
  • Cache서버에 데이터가 있으면 DB데이터를 조회하지않고 Cache 서버에 있는 결과값을 클라이언트에게 바로 반환( Cache Hit)
  • Cache 서버에 데이터가 없으면 DB에 데이터를 조회하여 Cache 서버에 저장하고 결과값을 클라이언트에게 반환 (Cache Miss)Write Back
  • 웹서버는 모든 데이터를 Cache 서버에 저장
  • Cache 서버에 특정 시간동안 데이터가 저장됨
  • Cache 서버에 있는 데이터를 DB에 저장
  • DB에 저장된 Cache 서버의 데이터를 삭제

Redis의 특징

  • Key, Value 구조이기 때문에 쿼리를 사용할 필요 없음
  • 데이터를 디스크에 쓰지않고 메모리 데이터에서 처리하기 때문에 속도가 빠름사용 자료형
  • String : 가장 일반적인 key-value 구조 형태
  • Set : String의 집합(여러개의 값을 하나의 Value에 넣을 수 있음)
  • Sorted Set : Set구조에서 정렬 Sort를 적용한 구조
  • Lists : Array형식의 데이터구조
  • Hash : Java에서 사용하는 HashMap 구조와 비슷Single Thread 구조
  • 한번의 하나의 명령만 처리가능 get,set 명령어의 경우 초당 10만개 이상 데이터를 처리할 수 있음
  • Race Condition 발생 가능성이 낮음.사용시 주의사항
  • 서버 장애 발생시 그에대한 방안모색
  • 메모리 관리 중요
  • 시간복잡도가 높은 명령어 사용 지향

Redis의 주요 사용처

  • Remote Data Store : 여러 서버의 Data공유를 위해 사용 할 수 있음.
  • 인증 토큰 개발 : JWT ...
  • Ranking Board (Sorted Set)
  • 유저 API Limit
  • Job Queue
  • Pub/Sub 기능 : 메세지 브로커 기능
  • 이 외에도 Master-Slave 형식의 데이터 이중화 구조에 대한 Redis Replication, 분산 처리를 위한 Redis cluster, 장애 복구 시스템 Redis Sentinel, Redis Topology, Redis Sharding, Redis Failover 등의 Redis를 더 효율적으로 사용하기 위한 개념들이 존재합니다.

참고자료

728x90

'CS > 데이터베이스' 카테고리의 다른 글

SQL 기본 및 활용  (0) 2024.04.14
데이터 모델과 SQL  (0) 2024.04.14
데이터 모델의 이해  (1) 2024.04.14
윈도우 함수 (Window Function)  (0) 2024.04.11
데이터베이스의 관계  (0) 2023.07.25