네트워크
캐시(Cache)가 뭔데?
cloudlim
2024. 1. 2. 22:05
캐시(Cache)란?
자주 사용하는 데이터나 값을 미리 복사해 놓는 임시 장소
데이터나 값을 왜 캐시에 복사해놓는가?
Client가 DB에 보다 빠르게 접근할 수 있으니깐
- Client는 원하는 걸 빨리 얻을 수 있어 좋고!
- DB는 부하가 생기지 않아서 좋고!
캐시란 놈의 등장
그 배경에는 파레토 법칙이 있다.
파레토법칙이란 결과의 80%는 20% 원인으로부터 비롯된다는 것이다.
그니깐 Client가 원하는 결과의 80%도 데이터의 20%로 커버가 될 수 있을 것이란 계산인 셈이다.
그럼 캐시를 어떻게 써야하는가?
잘 써야한다. 전략적으로: 캐싱 전략(Caching Strategies)
- Read Cache Strategy: 캐시를 읽는 전략
- Look Aside: 캐시에 찔러보고 없으면 DB에서 데이터 가져오는 전략
- 캐시와 DB 분리로 캐시 장애 대비에 Good
- 원하는 데이터만 쏙쏙 Cache에 저장해야함
- 근데 DB랑 Cache 데이터 정합성 문제가 생길 순 있음
- 단건 호출 빈도가 높은 서비스에는 비추
- 계속 같은 쿼리 쓰는 서비스에 적합(캐시에 있는 거 갖다 쓰면 되니깐)
- Read Through: 캐시만 바라보는 전략. Server가 요청한 데이터가 Cache에 없으면 Cache가 DB 조회해서 자체적으로 값 업데이트함. 그래서 Server는 Cache만 보게됨
- 캐시 장애 발생하면 망..(서비스 이용에 차질 발생) → 그래서 이 전략 사용 시 Cluster로 구성해서 가용성 높이길 추천
- 캐시-DB 간 데이터 동기화가 항상 이뤄져 데이터 정합성 문제X
- Look Aside: 캐시에 찔러보고 없으면 DB에서 데이터 가져오는 전략
- Write Cache Strategy: 캐시에 데이터를 입력하는 전략
- Write Back: Server 가 Cache store에 값 저장하면 일정주기 배치 작업을 통해 DB에 저장함(캐시가 일종의 Queue 역할을 하게되는 셈)
- Wrtie가 빈번한 경우 추천
- 배치로 DB에 저장하기에 쓰기 쿼리 회수 비용과 부하 줄일 수 있음
- 근데 캐시 오류 발생하면 데이터 영구 소실..근데 또 데이터베이스 장애 발생해도 서비스 정상 이용할 수 있다는 장점이 있기도 함.
- 자주 안쓰이는 불필요한 리소스도 Cache Store에 저장함
- Write Through: Cache와 DB에 동시 데이터 저장(일단 Cache store에 저장하지만 DB에 바로 저장됨)
- 캐시와 DB 항상 동기화
- 캐시 장애 발생했다고 데이터 유실 생기면 안되는 상황에 적합
- 매 요청마다 Write 2번(Cache store, DB)해야되서 좀 느리고 어찌보면 리소스 낭비일 수도 있음
- Write Back: Server 가 Cache store에 값 저장하면 일정주기 배치 작업을 통해 DB에 저장함(캐시가 일종의 Queue 역할을 하게되는 셈)
출처
[REDIS] 📚 캐시(Cache) 설계 전략 지침 💯 총정리
Redis - 캐시(Cache) 전략 캐싱 전략은 웹 서비스 환경에서 시스템 성능 향상을 기대할 수 있는 중요한 기술이다. 일반적으로 캐시(cache)는 메모리(RAM)를 사용하기 때문에 데이터베이스 보다 훨씬 빠
inpa.tistory.com
캐시란 무엇인가
# 캐시(Cache) > 자주 사용하는 데이터나 값을 미리 복사해 놓는 임시 장소 아래와 같은 저장공간 계층 구조에서 확인할 수 있듯이, 캐시는 저장 공간이 작고 비용이 비싼 대신 빠른 성능을 제공한
velog.io