개발

EHCache

동고킴 2021. 2. 18. 13:03
반응형

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