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가 더 많은 기능을 제공해주는것 같다.