[ 2022.11.29 TIL-Redis란? ]

Coosla·2022년 11월 29일
0

TIL

목록 보기
23/29

Cache(캐시)

✏️ Cache란?

  • 나중에 요청할 결과를 미리 저장해둔 후 빠르게 서비스해주는 것
  • 미리 결과를 저장, 요청이 오면 그 요청에 대해 DB/API를 참조하지 않고 Cache에 접근하여 요청을 처리하는 기법
  • 모든 결과를 캐싱할 필요 없이 서비스를 할 때 많이 사용되는 데이터만 캐싱함으로써 전체적인 효율을 올림

✏️ Cache 구조

  • Look aside cache
    • Web Server는 데이터가 존재하는지 Cache를 연계 확인
    • Cache에 데이터가 있으면 Cache에서 가져옴
    • Cache에 데이터가 없다면 DB에서 가져옴
    • DB에서 가져온 데이터를 Cache에 다시 저장
  • Write Back
    • Web Server는 모든 데이터를 Cache에 저장
    • Cache에 특정 시간동안의 데이터가 저장
    • Cache에 있는 데이터를 DB에 저장
    • DB에 저장된 데이터를 삭제
    • 단점
      • 메모리에 저장되기 때문에 장애가 생기면 데이터가 사라질 가능성 존재

✏️ Memcached

  • Memcached란?
    • 무료로 사용할 수 있는 오픈 소스
    • 분산 메모리 캐싱 시스템
    • DB부하를 줄여 동적 웹 애플리케이션의 속도 개선을 위해 사용
    • key-value형태로 메모리에 저장
  • 장점
    • 시스템의 사용되지 않은 일부 메모리를 활용할 수 있어 남는 자원을 효율적으로 사용하여 성능 향상
  • 단점
    • 인 메모리 기반의 시스템으로 재부팅 시 데이터가 소멸
    • 영구 저장이 필요하면 해당 데이터를 DB에 저장하고, 재부팅 시 DB에서 데이터를 가져와야함

Redis

✏️ Redis란?

  • 오픈 소스로서 NoSQL로 분류
  • Memcached와 같이 인 메모리 솔루션
  • 비관계형 데이터베이스
  • 메모리 기반의 '키-값' 구조의 데이터 관리 시스템
  • 모든 데이터를 메모리에 저장하고 조회하기에 빠르다
  • 데이터는 메모리와 디스크에 저장이 되기 때문에 데이터 복구가 가능

✏️ Redis 특징

  • 영속성을 지원하는 인 메모리 데이터 저장소
  • 다양한 자료 구조를 지원
  • 싱글 스레드 방식으로 인해 연산을 원자적으로 수행이 가능
  • 읽기 성능 증대를 위한 서버 측 리플리케이션을 지원
    • 리플리케이션(Replication) : 이중화 개념, 데이터를 거의 실시간으로 다른 레디스 노드에 복사하는 방식, 복제 서버는 읽기만 가능
  • 쓰기 성능 증대를 위한 클라이언트 측 샤딩 지원
    • 샤딩(Sharding) : 테이블의 스키마를 가진 데이터를 다수의 데이터베이스에 분산하여 저장하는 방법
  • 다양한 서비스(DB, Cache, Message Queue, Shared Memory 등)에서 사용되며 검증된 기술

✏️ Redis 장점

  • 리스트, 배열과 같은 데이터 처리에 유용
  • 리스트형 데이터 입력과 삭제가 빠름
  • 메모리를 활용하면서 영속적인 데이터 보존
  • Redis Server는 1개의 싱글 쓰레드로 수행되며, 서버 하나에 여러 개의 서버를 띄우는 것이 가능 (Master-Slave 구조)

✏️ Redis 단점

  • Key-Value 형태로 저장된 데이터를 레디스 내에서 처리하는 것이 어렵움

✏️ Redis 영속성

  • Redis는 영속성을 보장하기 위해 데이터를 디스크에 저장
  • 디스크에 저장된 데이터를 읽어서 메모리에 로딩
  • 디스크에 저장하는 방법
    • RDB(Snapshotting) 방식
      • 순간적으로 메모리에 있는 내용 전체를 디스크에 옮겨 담는 방식
    • AOF(Append On File) 방식
      • Redis의 모든 Write/Update 연산 자체를 모두 log파일에 기록하는 형태

✏️ Redis에서 지원하는 데이터 형식

✏️ Redis VS Memcached

✏️ Redis가 주목받는 이유

  • 데이터 저장소로 입력/출력이 가장 빠른 메모리를 채택
  • 단순 구조의 데이터 모델인 key-value 방식을 통해 빠른 속도
  • 캐시 및 데이터 스토어 유리
  • 다양한 API 지원

✏️ Redis 사용시 주의할 점

  • 서버 장애 발생 시 운영 플랜
    • 서버 장애 발생했을 때 데이터 유실이 발생할 가능성 존재
  • 메모리 관리 중요
  • 한 번에 하나의 명령만 처리

✏️ Redis 면접 질문

✏️ Redis 추가로 공부하면 좋은 기술들


참고

profile
프로그래밍 언어 공부 정리

0개의 댓글