728x90
캐싱(Caching)
- Cache: 성능향상을 위해 데이터를 복사해 저장하는 임시 기억 장치
- 속도가 느린 원본 저장 장치의 접근 횟수를 줄임으로 속도 향상(ex. CPU > RAM > ROM 순으로 속도가 빠름)
- 원본 데이터가 아니기 때문에 동기화, 휘발성 문제 등을 고려해야함
캐시의 사용
- Web Browser와 Web Server: 네트워크 속도로 인한 지연을 어느정도 예방할 수 있다.
- Client와 Server: 서버 접근 리소스를 줄일 수 있다.
- Server와 DB: 분산 서버 환경에서 DB 접근 횟수를 줄여 병목현상을 예방할 수 있다.
캐싱 관련 용어
- 캐시 적중(Cache Hit): 캐시에 접근했을 때 원하는 데이터가 존재
- 캐시 미스(Cache Miss): 캐시에 접근했을 때 원하는 데이터가 존재하지 않음
- 캐시 삭제 정책(Eviction Policy): 캐시 저장 공간 확보를 위해 데이터 삭제
- 캐시 전략: 읽기 또는 쓰기 등 캐시 운영 방식을 선택
캐시 전략
1. Cache-Aside(Lazy Loading)
- 가장 일반적으로 사용되는 전략
- 항상 캐시에 먼저 접근하고, 데이터가 없으면 원본(DB 등)에 접근해 데이터를 가져온 후 캐시에 저장하는 방식
- 장점: 필요한 데이터만 캐시에 저장
- 단점: 최초 데이터 접근은 상대적 느림, 데이터의 최신 여부를 보장하지 않음
2. Write-Through
- 데이터를 저장할 때 항상 캐시를 업데이트한 후 원본(DB)에 저장
- 장점: 캐시가 항상 동기화되어 있어 데이터의 최신 여부를 보장한다.
- 단점: 자주 사용하지 않는 데이터도 캐시되고, 데이터 저장 시간이 증가
3. Write-Back
- 데이터를 캐시에만 쓰고 캐시의 데이터를 일정 주기로 원본(DB)에 업데이트
- 장점: 쓰기가 빈번하게 발생할 경우 DB 부하를 줄일 수 있다.
- 단점: DB 업데이트 전에 캐시에 장애가 발생하면 데이터 손실 위험이 있다.
캐시 삭제 정책
캐시는 데이터 저장 비용이 크므로 적절한 저장 공간 확보를 위한 데이터 삭제 정책이 중요하다.
1. Expiration: 각 데이터의 TTL(Time-To-Live)을 성정해 시간 기반으로 삭제
2. Eviction Algorithm: 저장 공간이 부족할 경우 어떤 데이터를 삭제할지 결정하는 방식
- LRU(Least Recently Used): 가장 오랫동안 사용되지 않는 데이터를 삭제
- LFU(Least Frequently Used): 가장 적게 사용된 데이터를 삭제
- FIFO(First In First Out): 먼저 들어온 데이터를 삭제
728x90
'Redis' 카테고리의 다른 글
| [Redis] 분산 서버 환경에서의 세션 클러스터링(session clustering) (0) | 2023.03.23 |
|---|---|
| [Redis] Redis 데이터 형식(Bitmaps) (0) | 2023.03.22 |
| [Redis] Redis 데이터 형식(Sorted Sets) (0) | 2023.03.22 |
| [Redis] Redis 데이터 형식(Hashes) (0) | 2023.03.22 |
| [Redis] Redis 데이터 형식(Sets) (0) | 2023.03.22 |