Redis
캐시(Cache)란 ?
synclair
2023. 10. 3. 23:38
1. 캐시(Cache)란?
[ Cache ]
Cache란 자주 사용하는 데이터나 값을 미리 복사해 놓는 임시 장소를 가리킨다. 아래와 같은 저장공간 계층 구조에서 확인할 수 있듯이, 캐시는 저장 공간이 작고 비용이 비싼 대신 빠른 성능을 제공한다.
Cache는 아래와 같은 경우에 사용을 고려하면 좋다.
- 접근 시간에 비히 원래 데이터를 접근하는 시간이 오래 걸리는 경우(서버의 균일한 API 데이터)
- 반복적으로 동일한 결과를 돌려주는 경우(이미지나 썸네일 등)
Cache에 데이터를 미리 복사해 놓으면 계산이나 접근 시간 없이 더 빠른 속도로 데이터에 접근할 수 있다.
DBMS의 부하를 줄이고, 성능을 높이기 위해 캐시(Cache)를 사용한다.
원하는 데이터가 캐시에 존재할 경우 해당 데이터를 반환하며, 이러한 상황을 Cache Hit라고 한다.
하지만 원하는 데이터가 캐시에 존재하지 않을 경우 DBMS 또는 서버에 요청을 해야하며 이를 Cache Miss라고 한다.
캐시는 저장공간이 작기 때문에, 지속적으로 Cache Miss가 발생하는 데이터의 경우 캐시 전략에 따라서 저장중인 데이터를 변경해야 한다.
- Look aside cache (Lazy Loading)
- 캐시를 먼저 접근하여 데이터가 있는지 확인하고,
- 있다면 캐시 데이터 사용 / 없다면 실제 DB또는 API를 호출하여 사용한 후 캐시에 저장한다.
- Write back
- 데이터를 캐시에 저장한 후, 일정 시간동안 캐시에 모인 데이터를 DB에 저장한다.
- 이후 캐시에 존재하는 데이터는 삭제한다.
2. Local Cache vs Global Cache
[ Local Cache ]
- Local 장비 내에서만 사용되는 캐시로, Local 장비의 Resource를 이용한다.
- Local에서만 작동하기 때문에 속도가 빠르다.
- Local에서만 작동하기 때문에 다른 서버와 데이터 공유가 어렵다.
[ Global Cache ]
- 여러 서버에서 Cache Server에 접근하여 사용하는 캐시로 분산된 서버에서 데이터를 저장하고 조회할 수 있다.
- 네트워크를 통해 데이터를 가져오므로, Local Cache에 비해 상대적으로 느리다.
- 별도의 Cache서버를 이용하기 때문에 서버 간의 데이터 공유가 쉽다.