본문 바로가기
DBMS

[DBMS] Redis 알아보기

by 도전하는 린치핀 2024. 7. 11.

1.Redis란?

  • 위의 사진에서 보다 싶이 Dictionary 구조(Key - Value)의 형태로 데이터를 저장하고 관리하기 위한 서버
  • 오픈 소스 기반의 비관계형 데이터 베이스 관리 시스템
  • 데이터베이스, 캐시, 메시지 브로커로 사용되며 인메모리 데이터 구조를 가진 데이터 저장소

공식 홈페이지에서는 Redis의 핵심 기능을 아래와 같이 말하고 있다.

 

Redis - The Real-time Data Platform

Developers love Redis. Unlock the full potential of the Redis database with Redis Enterprise and start building blazing fast apps.

redis.io

Redis는 문자열, 해시, 목록, 집합, 범위 쿼리가 있는 정렬된 집합, 비트맵, 하이퍼로그 로그, 지리 공간 인덱스 및 스트림과 같은 컬렉션을 제공

Redis는 복제, Lua 스크립팅, LRU 축출, 트랜잭션 및 다양한 수준의 디스크 지속성이 내장되어 있어 고가용성을 제공한다.

Redis Sentinel 및 클러스터를 통한 자동 파티셔닝을 제공한다.

 

 

 

1-2. 캐시 서버(Cache Server)란

  • Cache는 이전의 요청을 저장해두었다가 빠르게 서비스 해주는 것을 의미
  • 결과를 저장하고 나중에 요청이 오면 DB 또는 API를 참조하지 않고 Cache에 접근하여 요청을 처리 
  • 데이터베이스는 데이터를 물리 디스크에 직접 쓰기 때문에 서버에 문제가 발생해도 데이터가 손실되지 않음
  • 하지만 모든 요청을 디스크에 접근하여 사용하면 사용가자 많아진다면 부하가 많아져서 느려질 수 있음
  • 따라서, 초기 서비스 운영이나 사용자가 많지 않은 경우 데이터베이스만으로 무리가 가지 않음
  • 캐시 서버는 Look aside cache 패턴과 Write Back 패턴이 존재

 

1-2-1. Look aside cache

  1. 클라이언트가 데이터를 요청
  2. 웹서버는 데이터가 존재하는지 Cache 서버에 먼저 확인
  3. Cache 서버에 데이터가 있으면 DB에 데이터를 조회하지 않고 Cache 서버에 있는 결과값을 클라이언트에게 바로 반환 (Cache Hit)
  4. Cache 서버에 데이터가 없으면 DB에 데이터를 조회하여 Cache 서버에 저장하고 결과값을 클라이언트에게 반환 (Cache Miss)

1-2-2. Write Back 

  1. 웹서버는 모든 데이터를 Cache 서버에 저장
  2. Cache 서버에 특정 시간 동안 데이터가 저장
  3. Cache 서버에 있는 데이터를 DB에 저장
  4. DB에 저장된 Cache 서버의 데이터를 삭제

 

2. Redis의 특징

  • Key, Value 구조이기 때문에 쿼리를 사용할 필요가 없습니다.
  • 데이터를 디스크에 쓰는 구조가 아니라 메모리에서 데이터를 처리하기 때문에 속도가 빠릅니다.
  • List, Set, Sorted Set, Hash 등과 같은 Collection 지원
    1. String : 가장 일반적인 key - value 구조
    2. Sorted Sets : 중복된 데이터를 담지 않는 Set 구조에 정렬 Sort를 적용한 구조로 랭킹 보드 서버 같은 구현에 사용
    3. Lists : Array 형식의 데이터 구조로 List를 사용하면 처음과 끝에 데이터를 넣고 빼는 건 빠르지만 중간에 데이터를 삽입하거나 삭제하는 것은 어려움
    4. Sets : String의 집합으로, 여러 개의 값을 하나의 value에 넣을 수 있음 포스트의 태깅 같은 곳에 사용
  • Race condition 방지
  • Single Threaded 
    • 한 번에 하나의 명령만 처리
    • 중간에 처리 시간이 긴 명령어가 들어오면 그 뒤에 명령어들은 모두 앞에 있는 명령어가 처리될 때까지 대기가 필요
    • get, set 명령어의 경우 초당 10만 개 이상 처리할 수 있을 만큼 빠름

3. Redis 사용 시 주의점

  • 메모리 데이터 저장소의 특성상, 서버에 장애가 발생했을 경우 데이터 유실이 발생할 수 있기 때문에 서버에 장애가 발생했을 경우 그에 대한 운영 플랜 필요
  • 메모리 관리가 중요
  • 싱글 스레드의 특성상, 한 번에 하나의 명령만 처리할 수 있습니다. 처리하는데 시간이 오래 걸리는 요청, 명령은 피해야 합니다.