Redis에 대해 알아보자.

찬근·2023년 7월 7일
0
post-thumbnail

이 글은 Redis 공식 문서의 내용을 바탕으로 작성되었습니다.

정의

데이터베이스, 캐시, 메시지 브로커, 스트리밍 엔진으로 사용되는 인메모리 데이터 구조 저장소

특징

  • 자료 구조 제공
    • Strings, Hashes, Lists, Sets, Sorted Sets, Bitmaps, HyperLogLog, Geospatial, Streams
  • 기능 제공
    • built-in replication
      • 데이터의 안정성과 가용성 향상
    • Lua scripting
      • 사용자 정의 기능 구현 및 복잡한 데이터 조작 수행
    • LRU(Least Recently Used) eviction
      • 가장 오랫동안 사용되지 않은 데이터 제거
    • Transactions
      • 여러 개의 연속된 명령을 하나의 원자적인 작업으로 실행 가능
      • 데이터 일관성과 안정성 유지 가능
    • On-disk persistence(디스크에 데이터 영구 보존)
      • 주기적으로 데이터를 디스크에 저장하거나 명령을 디스크 로그에 추가하여 데이터 영구 보존 가능
      • 데이터의 손실 방지, 시스템 재시작 시에도 데이터 유지 가능
    • High availability via Redis Sentinel(Redis Sentinel을 통한 고가용성)
      • Redis Sentinel: Redis 인스턴스의 상태 모니터링, 장애 발생 시 자동으로 장애 조치 수행
      • 시스템 가용성 유지
    • Automatic partitioning with Redis Cluster(Redis Cluster를 통한 자동 분할)
      • Redis Cluster: 데이터 자동 분할 및 여러 노드에 분산 저장 기능 제공
      • 데이터 수평 확장성 향상
    • Pub/Sub
      • Publish/Subscribe 메시징 패턴 지원
      • 메시지 큐, 이벤트 기반 시스템에서 활용 가능
    • Keys with a limited time-to-live
      • Key에 대한 제한된 유효 기간(Time-to-Live, TTL) 설정 가능
      • 데이터를 일시적으로 저장하고, 유효 기간이 지나면 Redis가 해당 Key 자동으로 제거
      • 캐시와 같은 임시 데이터 저장에 유용

언제 사용할까?

  • 캐시 서버
    • 인메모리 데이터 구조 저장소 → 빠른 데이터 액세스를 제공
    • Redis에 캐시된 데이터를 저장, 빠르게 액세스
    • 애플리케이션 성능 향상, 데이터베이스 부하 ↓
  • 세션 저장소
    • 세션 데이터 저장 및 관리에 적합
    • 사용자의 세션 상태를 저장 → 로그인 정보, 장바구니 등 유지 가능
    • 분산 시스템에서 여러 서버 간 세션 공유 용이
  • 메시지 브로커
    • Publish/Subscribe 메시징 패턴을 지원 → 실시간 메시지 전달 가능
    • 여러 애플리케이션 간 이벤트 기반 통신에 사용
    • 실시간 채팅, 알림, 신호 처리 등에 적합
  • 이외에도 실시간 분석 및 스트리밍, 대기열 시스템, 지리 공간 데이터 처리 등의 상황에서 사용
profile
일관성 있는 개발자

0개의 댓글