Skip to content

Ehcahce2 vs Ehcache3

JUNG YEON SU edited this page Oct 22, 2024 · 4 revisions

Ehcache2 vs Ehcache3

Ehcache란?

주로 로컬 캐시로 사용되는 java 오픈 소스 캐시 솔루션입니다.

  • 로컬 캐시
    • 애플리케이션이 실행되는 단일 서버 내에서 데이터를 메모리에 저장하여 빠르게 접근할 수 있도록 하는 캐시의 한 형태 입니다.
    • 장점: 단일 서버 내에서 저장하므로 네트워크 통신을 거치지 않아 응답시간이 매우 짧다.

arcus-java-client에서는 로컬 캐시를 지원하기 위해 ehcache를 사용하고 있습니다.

Ehcache2 vs Ehcache3

  1. Ehcache2와 Ehcache3의 가장 큰 차이점은 Jcache 표준 지원입니다.
  • Jcache(JSR-107)

    • Jcache란 java 플랫폼에서 캐시에 대한 공식 표준 api

    Ehcache가 Jcache의 표준을 지원함에 따라서 Jcache의 구현체로 ehcache를 사용할 수 있게 되었습니다.

    이에 따라 Jcache 기반으로 인터페이스 및 구조가 바뀌었습니다.

  • 구조 차이

기능 Ehcache 2 Ehcache3
CacheManager 단일 클래스로 전체 어플리케이션에서 단일 인스턴스만 존재하여 캐시 관리 Jcache 표준의 인터페이스로 여러 인스턴스를 지원할 수 있도록 변경
Element/Entry Element 캐시에 저장된 객체로 키-값, 메타데이터(만료시간등..) Entry 캐시에 저장된 데이터로 키-값만 포함한다.
  • 인터페이스 차이
기능 Ehcache2 Ehcache3 설명
copyOnRead / copyOnWrite O X ehcache2 에서 동시성 문제를 해결하기 위해 있던 설정입니다. 읽기나 쓰기 작업을 할때에 복사본에다가 수행하여 동시성 문제를 해결하였습니다. ehcache3 에서 자료구조를 concurrentMap 을 사용하여 해결함으로서 사라졌습니다.
memoryStoreEvictionPolicy(LRU) O X LRU 정책은 ehcache3 의 디폴트 정책이 되었으며 변경은 할 수 없다. 
eternal O X eternal 은 더 이상 지원하지 않습니다.
diskExpiryThreadIntervalSeconds O X 이는 일정시간 마다 디스크 안의 데이터의 만료를 체크하는 설정으로 ehcache3 에서는 disk 를 영구저장소 목적으로 활용하며 사라졌습니다.
CacheLoader/Writer X O 데이터를 요청하거나 로드 할때 외부 데이터 베이스에 저장 할 수 있습니다.
  1. OffHeap 저장공간 지원

Ehcache의 데이터는 기본적으로 heap 메모리에 저장됩니다.

Ehcache3에서는 OffHeap이라는 Memory Heap 외부의 추가적인 유형의 메모리 저장소를 사용할 수 있습니다.

OffHeap 공간은 java의 GC가 적용되지 않는 공간이며 Byte 단위의 큰 캐시를 저장 할 수 있습니다.