TIL/Spring

TIL 2025-01-13 (Redis)

myoma 2025. 1. 13. 19:47

1 ) 학습한 내용

  • Redis

 


 

  • Redis (Remote Dictionary Server)
    • 메모리 기반의 오픈 소스 데이터 구조 저장소
    • 매우 빠른 속도로 데아터를 처리할 수 있도록 설계되었으며, 캐싱, 메시징 브로커, 데이터베이스 등 다양한 용도
    • Redis는 다양한 데이터 구조와 고성능 처리 능력을 제공

 

  • 주요 특징
    • 메모리 기반
      • 모든 데이터가 메모리에 저장되어 초고속으로 데이터 접근이 가능
      • 데이터를 디스크에 지속적으로 저장하여 데이터 영속성을 보장 할 수 있다.
    • 다양한 데이터 구조
      • String : 가장 기본적인 데이터 타입
        • SET key "value"
      • List : 순서가 있는 문자열 목록 (ex 대기열 구현)
        • LPUSH key "value1" "value2"
      • Set : 중복 없는 문자열 집합
        • SADD key " value"
      • Sorted Set(Zset) : 스코어 기반으로 정렬된 집합
        • ZADD key 1 " value"
      • Hash : 필드와 값의 쌍으로 이루어진 데이터 (ex Json 구조)
        • HSET key field "value"
      • Bitmap, HyperLogLog, Streams : 특수한 용도의 데이터 타입
    • 고성능
      • 메모리 기반으로 초당 수십만 개의 요청을 처리 가능.
      • 읽기와 쓰기 모두 낮은 지연 시간을 가진다.
    • 멀티유저 지원
      • Pub/Sub 기능을 통해 메시지 브로커로 사용 가능
      • 실시간 채팅이나 알림 시스템에 적합
    • 지속성 (Persistence)
      • 데이터를 디스크에 저장하여 재시작 후에도 데이터 유지 가능
      • RDB (Redis Database Snapshot) : 일정 간격으로 데이터 전체를 저장
      • AOF ( Append Only File) : 모든 쓰기 작업을 로그로 저장
    • 확장성
      • Redis는 클러스터링과 복제를 지원하여 데이터 복제 및 확장을 용이하게 한다.
      • 클러스터를 통해 샤딩을 구현하여 대규모 데이터 처리 가능
  • 단점 및 한계
    • 메모리 의존 : 데이터가 메모리에 저장되므로 대용량 데이터를 처리할 때 비용 증가
    • 데이터 복제 비용 : 마스터-슬레이브 구조에서 데이터 복제 시 메모리와 네트워크 비용 증가
    • 복잡한 트랜잭션 : Redis는 간단한 트랜잭션은 지원하지만 복잡한 관계형 트랜잭션은 제한적
    • 정렬되지 않은 데이터를 효율적으로 처리하는 데 한계 : Redis는 정렬된 데이터는 빠르게 처리하지만 정렬되지 않은 대규모 처리를 처리하기 위해 추가적인 작업이 필요