레디스

장재영·2024년 12월 11일

레디스

어디에 쓸까?

  1. 데이터 캐싱
  • 속도

캐싱: 자주 사용되거나 요청되는 데이터를 임시로 저장하여, 데이터 접근 속도를 높이고 시스템의 전반적인 성능을 향상시키는 기술

  1. 세션
  • 세션 데이터를 메모리에 저장하면 빠른 액세스가 가능하며, TTL(Time-To-Live) 설정으로 자동 만료가 가능
  1. 실시간 애플리케이션
  • 낮은 레이턴시와 높은 처리량을 제공하여 실시간 처리가 필요한 애플리케이션에 적합
  1. lock
  • SETNX(Set if Not Exists) 명령과 만료 시간을 활용하여 분산 환경에서 락을 관리할 수 있습니다.
  1. 작업 큐 및 비동기 처리
  • 리스트 자료구조(List)를 사용하여 작업 큐를 만들고, 작업의 순차 처리를 쉽게 구현
  • bullmq라는 라이브러리도 있음
  1. 그 외
  • Sorted Set을 이용한 데이터분석
  • GEO명령어를 통한 좌표저장 및 계산

사용 이유

  1. 속도
  • 메모리 기반 데이터 저장소로, 데이터 접근 속도가 빠름
  1. 다양한 데이터 구조
  • key-value 외에도 list, hset, set, sorted set, bitmap, hyperloglog 등 다양한 자료형 지원
  1. 지속성
  • 메모리 기반이지만 레디스 자체에서 스냅샷과 AOF(Append-Only File) 방식을 통해 데이터 영속성을 유지

    스냅샷: 특정 시점 전체를 저장
    AOF: 데이터 변경 사항(쓰기, 삭제 등)을 명령어 단위로 순차적으로 로그에 기록

  1. 쉽고 간편
  • 간단한 명령어로 데이터를 처리할 수 있어 배우고 사용하기 쉬움
  1. 레디스 옵션? 기능들
  • pub/sub, bullMQ 등 여러 기능

문제점

  1. 속도가 빠른 메모리기반이라 용량이 부족
    => 돈으로 해결가능

  2. 복잡한 데이터 처리의 어려움

  • Redis는 기본적으로 키-값 데이터 모델을 따르며, 관계형 데이터베이스(RDBMS)와 같은 스키마 기반 또는 복잡한 데이터 관계를 다루기 힘듬
  • 복잡한 데이터는 관계형 데이터베이스를 사용하자
  1. 영속성
  • 스냅샷은 실시간 데이터를 저장하는 방식이 아니기에 장애 발생 시 최신 데이터를 잃을 위험이 있음
  • AOF는 명령어 실행 시마다 디스크에 기록이 되므로 성능에 영향을 줌
profile
개발 하고 싶은 비버

0개의 댓글