Post

4주2일차_인메모리 저장소_및_캐싱_전략_개요

4주2일차_인메모리 저장소_및_캐싱_전략_개요

필기 가자

redis와 Memcached의 비교

특성redisMemcached
데이터 유형문자열, 리스트, 해시, 집합 등 다양한 데이터 구조 지원문자열, 숫자 등 단순 Key-Value
영속성 지원지원 (Snapshot, Append Only File)지원하지 않음
분산 환경 지원redis Cluster기본적으로 지원
성능빠름매우 빠름
활용 사례캐싱, 세션 관리, 메시지 큐, 실시간 분석캐싱, 세션 관리
메모리 사용 효율성상대적으로 낮음상대적으로 높음

2. 부하 감소

  • 캐싱은 데이터베이스나 API 서버의 부하를 줄이고 안정성을 높입니다.
  • 빈번한 데이터 요청을 캐싱하여 시스템 성능을 최적화.

사례:

  • 대규모 트래픽 처리:
    • 인기 있는 블로그 게시글을 캐싱하여, 데이터베이스 부하 없이 수백만 요청 처리.
  • 예시:
    • 블로그 게시글 데이터:
      • 캐싱 전: 1000명의 사용자가 데이터베이스 요청 → 부하 증가.
      • 캐싱 후: 1000명의 사용자가 캐시에서 데이터 반환 → 부하 감소.

        2.3 캐싱의 단점과 고려사항

  1. 데이터 일관성 문제:
    • 데이터 소스가 변경되었을 때 캐시와의 불일치 발생.
    • 해결: 캐시 만료 정책(TTL) 설정.
  2. 메모리 용량 문제:
    • 인메모리 저장소는 RAM을 사용하므로 용량이 제한됨.
    • 해결: LRU(Least Recently Used) 또는 LFU(Least Frequently Used) 정책 적용.
  3. 캐시 무효화:
    • 중요한 데이터 변경 시 캐시를 무효화하여 최신 데이터를 유지.
    • 해결: 데이터 업데이트 시 캐시 제거.

3.1 Cache-aside 패턴

  • 작동 방식:
    1. 데이터 요청 시 캐시에서 먼저 조회.

3.2 Write-through 패턴

  • 작동 방식:
    1. 데이터 변경 요청 시, 캐시와 데이터 소스(DB 등)에 동시에 데이터 저장.
    2. 캐시는 항상 최신 데이터를 유지.

3.3 Write-back 패턴

  • 작동 방식:
    1. 데이터 변경 요청 시, 캐시에만 저장하고 데이터 소스(DB 등)는 나중에 업데이트.
    2. 데이터 소스는 비동기로 업데이트되어 쓰기 성능을 최적화.

3.4 Write-around 패턴

  • 작동 방식:
    1. 데이터 변경 요청 시, 데이터 소스(DB 등)에만 저장.
    2. 캐시는 읽기 요청 시 데이터 소스에서 조회 후 업데이트. | 패턴 | 특징 | 장점 | 단점 | | — | — | — | — | | Cache-aside | 읽기 요청 시 캐시를 먼저 조회. 없으면 DB에서 조회 후 저장. | 읽기 성능 최적화 | 캐시 미스 시 응답 시간 증가 | | Write-through | 캐시와 데이터 소스에 동시에 데이터 저장. | 데이터 일관성 유지 | 쓰기 성능 저하 | | Write-back | 캐시에만 저장하고 비동기로 데이터 소스 업데이트. | 빠른 쓰기 성능 | 데이터 손실 가능성, 일관성 문제 | | Write-around | 데이터 소스에 저장, 캐시는 읽기 요청 시 업데이트. | 쓰기 성능 최적화 | 캐시와 데이터 소스 일관성 문제 |

각 패턴은 읽기 성능, 쓰기 성능, 데이터 일관성 등의 요구 사항에 따라 선택적으로 적용해야 합니다.

  1. 인메모리 저장소의 한계와 고려사항 할 차례 5.2 redis-Spring boot 설정 5.2.1 프로젝트 설정 Gradle 의존성 추가: implementation ‘redis.clients:jedis:4.3.1’

Action Plan

  • 각 패턴별 코드 실습
  • jedis 실습 진행(현재 오류 발생)

수업 내용 필기 정리.

  • write-back
    • DB 저장을 비동기로 작업하는 방식. 쓰기 성능 최적화 가능함.
    • 단점 :
      • 예제 참고 : async update writeback.
  • 4주차 예제 참고하기!
  • writeaound
  • 작동 방식:
    1. 데이터 변경 요청 시, 데이터 소스(DB 등)에만 저장.
    2. 캐시는 읽기 요청 시 데이터 소스에서 조회 후 업데이트.
      • 읽기시
        • 캐시에서 읽는다
      • 캐시 미스면 본로직을 수행한다.
      • 캐시 히트면 본로직을 수행하지 않는다.

레디스 실습

  • 레디스 설치.
  • 강사님 : caffeine을 사용하심. 로컬 캐시. *
This post is licensed under CC BY 4.0 by the author.