반응형
EHCache는
- 오픈소스 기반의 Local Cache이다
- 속도가 빠르며 경량 Cache라는 장점이 있다.
- Disk, Memory 저장이 가능한 형태
- 서버 간 분산 캐시를 지원한다. (동기/비동기 복제)
- JSR107 JCache 표준을 지원한다. 따라서 JCahce에서 제공하는 Annotation을 통해 이미 작성된 코드에 간단하게 기능 추가가 쉽다.
JSR-107 : (JCACHE - Java Temporary Caching API) 객체 생성, 공유 엙세스, 스풀링, 무효화 및 JVM 전반에 걸친 일관성을 포함하여 Java 객체의 메모리 캐싱에서 사용할 API에 대한 기준으로 볼 수 있다. 해당 Spec으로 구현된 cache로는 EhCache가 유명하며, Hazelcast, Infinispan, Couchbase, Redis, Caffeine 등도 해당 기준을 따르는 것으로 알려져있다.
build.gradle
implementation 'org.springframework.boot:spring-boot-starter-cache'
implementation 'net.sf.ehcache:encache:2.10.6'
spring-boot-starter-cache는 기본 CacheManager로 ConcurrentHashMap을 사용한다.
Ehcache 2.x로 교체하기 위해 직접 의존성을 추가하였다.
속성
- enternal
- true이면 timeout 관련 설정은 무시되고, Element가 캐시에서 삭제되지 않는다.
- maxElementsInMemory
- 메모리에 저장될 수 있는 개체의 최대 개수
- overflowToDisk
- Element가 지정한 시간동안 사용(조회)되지 않으면 캐시에서 제거된다. 이 값이 0인 경우 조회관련 만료 시간을 지정하지 않는다. 기본값은 0이다. (선택)
- timeToLiveSeconds
- Element가 존재하는 시간. 이 시간이 지나면 캐시에서 제거된다. 이 시간이 0이면 만료시간을 지정ㄹ하지 않는다. 기본값은 0이다. (선택)
- diskPersistent
- VM이 재가동할 떄 디스크 저장소에 캐싱된 객체를 저장할지의 여부를 지정한다. 기본값은 false이다. (선택)
- memoryStoreEvictionPolicy
- 객체의 개수가 maxElementsInMemory에 도달했을 때, 메모리에서 객체를 어떻게 제거할지에 대한 정책을 지정한다. 기본값은 LRUdlek. FIFO와 LFU도 지정할 수 있다. (선택)
Annotation
- @Cacheable : 캐시할때 사용
- @CacheEvict : 캐시를 지울때 사용. 데이터를 새로 갱신해야할 시점에 사용한다.
참고
반응형
'개발' 카테고리의 다른 글
WebSocket (0) | 2021.02.18 |
---|---|
WebFlux (0) | 2021.02.18 |
Git 명령어에 익숙해지자 (자주쓰는 명령어) (0) | 2021.02.03 |
[백준 1922] 네트워크 연결 (0) | 2021.01.17 |
[백준 1948] 임계경로 (0) | 2021.01.17 |