Cache & Redis

2024. 10. 7. 22:37· CS지식
목차
  1. DB의 부하를 줄이기 위해 캐시 사용 할 수 있음
  2. 캐싱 전략 패턴
  3. 읽기 전략
  4. 쓰기 전략
  5. 캐시 사용 시 주의사항
  6. 특징:
728x90

DB의 부하를 줄이기 위해 캐시 사용 할 수 있음

캐시: 데이터나 값을 미리 복사해놓는 임시 저장소(Memcached, Redis, Local Memory cache 등 구현)

활용: Dynamic Programming(이 전의 값을 저장), JPA의 영속성 컨텍스트

 

파레토의 법칙에 의해 자주 사용되는 내용의 20%를 캐싱해두면 성능 증가를 이룰 수 있다

 

Cache Hit: 캐시에 데이터가 존재, 해당 데이터를 바로 반환

Cache Miss: 원하는 데이터가 존재x, db에 찾아가서 반환

 

캐싱 전략 패턴

읽기 전략

Look Aside(옆을 보다): 캐시에 데이터가 없을 때 db에 요청

장점: 캐시에 문제가 생기는 경우 DB로 요청을 위임

단점: 캐시와 DB의 데이터 정합성 유지 어려움, 첫 조회 시 DB 부하 발생

 

Read Through: (항상 캐시를 읽는 전략) 캐시에 데이터가 없으면 DB에서 캐시에 값을 가져오고 서버가 읽음

장점: 데이터 정합성 보장

단점: 캐시가 죽으면 애플리케이션 문제 발생

 

 

쓰기 전략

Write Around (쓰기 우회) DB에 바로 데이터를 씀

장점: 성능 좋음 빠름

단점: 캐시, DB 데이터 정합성 유지 어려움

 

 

Write Back(나중에 쓰기) 캐시에 데이터를 밀어놓고 한번에 쓰기

캐시에 먼저 많은 양의 데이터를 써 둡니다

일정 시간이 지난 뒤에 한꺼번에 많은 양의 데이터를 밀어 넣음 => 쓰기 횟수 비용을 줄일 수 있음(스케줄링 기법)

(insert문을 하나로 묶어서 성능적으로 이점을 가져가게 만들어야함)

단점: 캐시의 데이터 유실 문제(캐시가 죽을 시 데이터가 유실 될 수 있음)

 

Write Through 항상 캐시를 거치고 쓰게 됨

장점: 데이터의 정합성이 보장

단점: 두 번의 쓰기가 항상 진행되기 때문에 성능 고려

 

캐시 사용 시 주의사항

자주 사용되면서 변경이 되지 않는 데이터

유실되어도 크게 문제가 없는 데이터

DB와 함께 사용할 때 데이터 정합성 문제 고려

 

Redis: Remote Dictionary Server(외부 사전 형태 저장하는 서버), 캐시 구현 방법 중 한가지

key-value 구조

메모리에 저장하는 Key-Value 기반 NoSQL DBMS

캐싱, 임시 작업 큐, 실시간 채팅, 메세지 브로커 등 활용 가능

 

특징:

Performance: 메모리에 저장되기에 빠른 속도로 접근 가능

Data Structure: 다양한 자료구조 제공

Single Thread: 한번에 하나의 명령만을 처리, Race Condition이 거의 발생하지 않음(두 개 이상의 프로세스 동시적 하나의 리소스로 경쟁하는 상태)

Persistence: 메모리에 저장된 데이터를 디스크에 영속화 가능, 서버에 문제가 발생하더라도 복구 가능

RDB: 특정한 간격으로 현재 Redis의 메모리에 존재하는 데이터의 스냅샷을 남김

장점: 압축하여 저장하기 때문에 AOF보다 크기가 작음, 로딩/복구 속도가 빠름

단점: 백업 중 서버가 다운될 경우 최신 데이터 유실 가능(특정 간격으로 저장하기에)

 

AOF: 데이터 변경 시 (CUD) 로그 파일에 기록

장점: 저장 속도 빠름, 실시간 데이터 백업 가능, 데이터 손실 거의 없음

단점: 명령 실행 기록을 모두 기록, 파일 크기가 크고 복원 소요기간 김

 

Redis를 우아하게

1. 데이터 타입에 따른 적절한 자료구조 사용

2. O(N)명령어 주의: KEYS/ FLUSHALL, FLUSHDB, Delete Collections/ Get ALL Collections

    해당 명령어 모두 처리 된 후 다른 명령어 실행되기에 시간이 오래걸리는 명령어 사용 시 주의

3. 메모리 관리, 메모리 단편화 발생

메모리가 작은 공간으로 나뉘어져 관리되어 사용 가능한 공간이 충분함에도 해당 메모리를 할당 할 수 없음

=> 실제 물리 메모리 사용량을 나타내는 RSS 값을 모니터링하여 메모리 관리를 해주어야 함

4. Redis 목적성: 캐시용, 저장소용으로 사용할지에 대한 목적 분명히 하기

Persistence기능 => 장애 발생 가능성 높음

 

 

출처 https://www.youtube.com/watch?v=tVZ15cCRAyE&t=172s

저작자표시 비영리 (새창열림)

'CS지식' 카테고리의 다른 글

스피링 부트 내장 톰캣  (0) 2024.10.17
락  (2) 2024.10.10
InnoDB  (0) 2024.10.10
Nginx vs APACHE  (1) 2024.10.08
DB Index  (0) 2024.10.08
  1. DB의 부하를 줄이기 위해 캐시 사용 할 수 있음
  2. 캐싱 전략 패턴
  3. 읽기 전략
  4. 쓰기 전략
  5. 캐시 사용 시 주의사항
  6. 특징:
'CS지식' 카테고리의 다른 글
  • 락
  • InnoDB
  • Nginx vs APACHE
  • DB Index
두잇 두두
두잇 두두
읽기 쉬운 코드를 짜기 위해 노력합니다. 좋은 코드는 단순하고 이해하기 쉬워야 한다고 생각합니다.
두잇 두두
두두 DB
두잇 두두
전체
오늘
어제
  • 분류 전체보기 (135)
    • CS지식 (7)
    • 시스템 설계 (5)
    • 자료구조&알고리즘 (36)
      • 자료구조 (1)
      • 백준 (13)
      • 프로그래머스 (15)
      • 인프런 (2)
    • Python (9)
      • Docs (3)
      • 실험실 (2)
    • Django (36)
      • orm (10)
      • view (3)
      • model (3)
      • admin (3)
      • restframework (13)
      • error (1)
      • utils (2)
    • Java (2)
      • JPA (3)
    • AI (1)
      • AI가 쓴 글 (1)
    • Git (4)
    • Linux (1)
    • 개발자로써 (8)
      • 회고 (1)
    • 문화생활 (0)
      • 여행 (0)
    • 도서📚 (0)
      • 일반 도서 (0)
      • 개발 도서 (0)
    • 프론트 (1)
      • snippet (1)

블로그 메뉴

  • 홈
  • 방명록

공지사항

인기 글

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
두잇 두두
Cache & Redis
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.