Redis, Memcached 개념 정리

yunseul·2024년 6월 27일

Cache

목록 보기
1/1

Redis (Remote Dictionary Server)

인메모리 데이터 구조를 가졌으며 key-value 형태로 저장 후, 다양한 데이터 구조를 사용할 수 있는 기능을 제공하는 DBMS

Redis 특징

  • ACID 속성
    • redis 는 원자적 연산을 사용하여 데이터 무결성을 보장
  • 백업 및 복구
    • snapshot 과 AOF(Append Only File) 방식을 통해 데이터 백업 및 복구가 가능

Redis 장점

  • 다양한 데이터 구조를 지원하므로 유연한 데이터 모델링 가능 (list, set 등)
    • string : 가장 일반적인 key-value 구조
    • set : string 의 집합으로 여러 개의 값을 하나의 value에 넣을 수 있음
    • sorted set : 중복된 데이터를 담지 않는 set 구조에 정렬 sort 를 적용하는 구조
    • list : array 형식의 데이터 구조
  • 지속성
    • 데이터를 디스크에 저장할 수 있는 옵션을 제공하므로
  • 고성능
    • 빠른 읽기/쓰기 성능
    • 디스크가 아닌 메모리에 데이터를 저장하므로
  • 복제 및 클러스터링
    • master - slave 복제, clustering 지원
  • pub/sub 기능 제공
    • 메시지 브로커로 작동하여 클라이언트 간에 실시간 메시지를 교환할 수 있는 기능

Redis 단점

  • 메모리 사용량
    • 다양한 데이터 구조를 지원하므로, 상황에 따라 메모리 사용량이 높아질 수 있음
  • 복잡성
    • 고급 기능을 사용하기 위해 많은 학습이 필요하며, 관리가 복잡해짐
  • 싱글스레드
    • 기본적으로 단일 스레드로 동작하기 때문에 CPU 코어를 모두 활용하기 어려움
    • I/O 멀티플렉싱을 통해 높은 성능을 구현

Redis 사용 사례

  • 세션 저장소
    • 웹 애플리케이션의 사용자 세션 데이터를 저장
  • 실시간 분석
    • 실시간 로그 수집 및 분석
  • 캐싱
    • 데이터베이스 쿼리 결과를 캐싱하여 성능 향상
  • 메시지 브로커
    • pub/sub 기능을 이용한 메시지 큐
  • 지리공간 서비스
    • 지리공간 데이터를 저장하고 쿼리
  • 순위표
    • 게임의 순위표 데이터를 저장하고 빠르게 조회

Memcached

분산 메모리 객체 캐싱 시스템으로 데이터를 메모리에 저장 후, key-value 값으로 검색하는 기능을 제공

Memcached 특징

  • LRU(Least Recently Used) 캐싱
    • 메모리가 부족할 때, 가장 오래된 데이터를 자동으로 제거
  • 분산 캐시
    • 분산된 환경에서 캐시를 효율적으로 관리
  • 간단한 프로토콜
    • 텍스트 기반 프로토콜을 사용하여 쉽게 이해하고 구현 가능

Memcached 장점

  • 단순성
    • 간단하고 가벼운 구조로 빠르게 배포 가능
  • 고성능
    • 짧은 지연 시간과 높은 처리량 제공
  • 확장성
    • 여러 대의 서버에 Memcached 인스턴스를 배포하고 로드 밸런싱을 통해 요청을 분산
  • 멀티 스레드
    • 멀티 스레드 아키텍처를 사용하여 여러 CPU 코어를 활용 가능

Memcached 단점

  • 일관성 부족
    • 메모리에만 데이터를 저장하므로, 데이터 손실될 수 있음
  • 제한된 데이터 구조
    • 기본적인 문자열 값을 저장 및 사용되며, 복잡한 데이터 구조를 저장, 질의하는데 적합하지 않음
  • 지속성 없음
    • 서버 재시작 시, 데이터가 모두 사라짐
  • 제한된 기능
    • 기본적인 캐싱 기능만 사용 가능
  • 보안
    • 기본적으로 인증 및 접근 제어 기능이 부족

Memcached 사용 사례

  • 웹 서버 캐싱
    • 웹 페이지의 결과를 캐싱하여 응답 시간을 단축
  • 데이터베이스 쿼리 결과 캐싱
    • 빈번하게 조회되는 데이터베이스 쿼리 결과를 캐싱
  • 세션 저장소
    • 사용자 세션 데이터를 저장하여 빠르게 접근
  • 애플리케이션 캐싱
    • 애플리케이션 레이어에서 자주 사용되는 데이터를 캐싱
  • 오브젝트 캐싱
    • 자주 사용되는 오브젝트를 메모리에 저장하여 빠르게 접근

공통점

  • 인메모리 데이터 스토어이며, 1ms 이하의 응답대기 시간
  • key-value 형식으로 데이터를 저장
  • 완성형 오픈소스 소프트웨어
  • 고성능 캐싱 솔루션으로 데이터베이스 부하를 줄이는데 사용
  • 네트워크를 통해 접근 가능

차이점

  • 확장성
    • Memcached : scale up
    • Redis : scale out
  • 데이터 제거
    • Memcached : LRU ( Least Recently Used )
    • Redis
      • No Eviction
      • All Keys LRU
      • Volatile LRU
      • All Keys Random
      • Volatile Random
      • Volatile TTL
  • 데이터 타입
    • Memcached : string
    • Redis : string, hash, sorted set, list, set
  • 영속성
    • Memcached : 메모리에만 저장 가능
    • Redis : 메모리와 디스크에 저장 가능
  • 기능
    • Memcached : 단순 캐싱 기능에 집중
    • Redis : pub/sub 메시징, Lua 스크립팅, 트랜잭션 등의 기능 제공

참고 자료

profile
새로운 것을 시도하고 도전하는 것을 좋아하는 Engineer 입니다..

0개의 댓글