Cache - Ehcache, Caffeine
Ehcache
Java 기반 오픈 소스 Cache 라이브러리
javax.cache API(JSR-107 JCache) 지원 (v3 부터)
JCache(Java Temporary Caching API): Java에서 제공하는 표준 Caching API
Terracotta를 사용한 분산 캐싱 지원
저장 방식: Heap Memory 추천
In-Memory: JVM 힙 메모리. (DEPRECATED)
OffHeap: JVM 힙 메모리 외부에 있는 메모리. Java GC에 의해 데이터가 정리되지 않는 공간
Local Disk
메모리 공간이 가득차면 삭제 알고리즘에 따라 제거한다.
LRU(Least Recent Used)
LFU (Least Frequency Used)
FIFO(First In First Out)
캐시마다 XML에 설정해야하는 번거로움이 있다.
의존성 추가
1
2
implementation("org.springframework.boot:spring-boot-starter-cache")
implementation("org.ehcache:ehcache:3.10.6")Caffeine
GitHub에서 거의 최적의 적중률을 제공하는 고성능 Java 캐싱 라이브러리라고 소개하고 있다.
In-Memory 기반이며, 스레드 안전(Thread safety)하다.
제거 전략으로 크기 기반, 시간 기반, 참조 기반이 있다.
W-TinyLFU(Window-TinyLfu) 알고리즘을 사용한다.
LRU와 LFU의 장점을 통합하고 LRU와 LFU의 단점을 적절히 개선한 알고리즘
캐시 저장 공간을 Window Cache(1%)와 Main Cache(99%)로 나눈다.
Window Cache: LRU 제거 정책
새로운 데이터가 가장 처음 저장되는 공간
공간이 가득차면 오래된 캐시는 LRU 방식에 따라 Main Cache로 이동한다.
Main Cache: SLRU(Segmemted LRU) 제거 정책
Probation Cache (20%): 한 번만 사용된 데이터를 저장한다.
일정 기간 내에 재사용 되면 Protected Cache로 이동한다.
Protected Cache (80%): 자주 사용되는 데이터를 저장한다.
오래된 캐시는 TinyLFU 알고리즘에 의해 제거되거나 Probation Cache로 이동한다.
JSR-107 JCache와 Guava를 지원한다.
적용 방법으로 XML과 Configuration이 있다.
의존성 추가
1
2
implementation 'org.springframework.boot:spring-boot-starter-cache'
implementation 'com.github.ben-manes.caffeine:caffeine:3.1.1'References
EHCache 설정방법 (Spring Boot) | Carrey`s 기술블로그
스프링부트 Caching 도입하기(Redis, Ehcache)
[Spring] ehCache2와 달라진 ehCache3 사용
Introduction to caffeine caching core principles

[Spring Boot] Spring Cache
cache
Spring Boot

certbot으로 HTTPS설정하기 (Nginx)
Certbot 으로 HTTPS 설정하기.
Server
