본문 바로가기

cache

Local cache

Cache

데이터를 미리 복사해 놓는 임시 장소다.

 

Ehcache

ehcache 는 빠르고 단순하다.

하이버네이트나 mybatis 에서 제공하는 기본 캐시.

 

ehcache 는 카페인 캐시 보다 많은 기능이 있다.

분산 처리, 등등..

 

분산 캐싱을 통해 수평 확장이 가능해진 부분..

 

물론 저 테라코타 서버가 먼저 배포가 되어야 함.

 

 

caffeine cache

카페인 캐시는 아주 고성능의 로컬 캐시다.

Guava Cache의 최적화되고 강화된 로컬 캐시라고 할 수 있다.

스프링 5에서도 Guava Cache를 포기하고 Caffeine 을 로컬 캐시로 사용한다.

 

Concurrent hash map, Guava 보다 성능이 빠르다.

 

 

카페인 캐시는 왜 빠를까?

캐시는 적중률이 중요하다. 캐시 제거 전략이나, 캐시 용량 등 캐시 적중률에 영향을 미치는데,

서버의 리소스 활용도 중요하고,, 어떻게 카페인이 최적화 했을까?

 

W-TinyLFU 

간단한 캐시들은 LFU, LRU 를 사용하고, 카페인 캐시는 W-TinyLFU 알고리즘을 사용한다.

 

왜 이걸 사용했을까?

 

LRU , LFU 의 단점

LRU 는 쉽고 좋은 적중률을 보이지만, 실수로 전체 데이터를 검색한 경우 이력 엑세스 기록이 오염될수있다.

LFU 는 빈도 정보를 따로 유지해야되고 각 엑세스마다 업데이트를 해야되니 오버헤드가 상당하다.

 

 

그럼 W-TinyLFU는?

저런 문제들을 해결하기 위해 최적화 알고리즘을 사용한다.

Count-Min Sketch 알고리즘도 사용하고,,

자세히 보진 않겠다.

 

https://www.fatalerrors.org/a/caffeine-cache-details.html

 

읽어보면 W-TinyLFU 알고리즘, 고성능 readBuffer, writeBuffer 타임휠 알고리즘 등을 써서

고성능 의 로컬 캐시를 제공해준다는것.

 

 

정리하면 카페인 캐시가 고성능 이지만 ehcache가 더 많은 기능을 제공해주는것 같다.