Program/Java

ehcache 가이드

soccerda 2019. 5. 17. 13:30
반응형

라이브러리

  - ehcache-core-x.x.xjar

환경설정

  - Cache 객체명, Data Size, 유효기간, 동기화 정책

  - ehcache.xml 캐시정책

           maxEntriesLocalHeap="1500000"  //저장될 객체의 최대수
           eternal="false"  // 시간 설정 무시 옵션
           timeToIdleSeconds="600"  //설정된 시간 동안 Idle 상태시 갱신(10분)
           timeToLiveSeconds="3600" // 설정된 시간 동안 유지 후 갱신(1시간) 
           diskPersistent="true"  //디스크 저장 사용 옵션
           overflowToDisk="false"  //메모리 부족시 디스크 저장 옵션
           memoryStoreEvictionPolicy="LRU" // 데이터 제거 알고리즘 옵션

           statistics="true" //JMX통계정보 갱신 옵션

 

 - expire & evict

   캐쉬 그룹별 expire설정 (timeToLiveSeconds)이 간단하고 memory에서 실제적으로 evict되는 설정도 간다

 - DiskStore

   캐쉬되는 element한계(maxElementsInMemory)를 초과할 경우, disk에 저장할 수 있음. 

   추가기능 : disk에 저장된 캐쉬에 대한 expire속성도 있고  jvm restart시에 저장되었던 캐쉬를 초기화하지 않고 계속 사용가능(diskPersistent)

 

CacheManager 생성

  - 모든 Cache 객체를 관리

  - 생성시 Singleton Mode와 Instance Mode 2가지 지원

  - Singleton Mode

    CacheManager.newInstance();

    String[] cacheNames = manager.getCacheNames();

   - Instance Mode

    CacheManager manager1= CacheManager.newInstance("src/config/ehcache1.xml");

    CacheManager manager2= CacheManager.newInstance("src/config/ehcache2.xml");

    String[] cacheNamesForManager1 = manager1.getCacheNames();

    String[] cacheNamesForManager2 = manager2.getCacheNames();

 

 

Cache Operation  

  - Cache 객체 로드

  - 캐시 대상이 되는 모든 객체는 Serializable 되어야 한다.

  - 만약 Serializable 되지 않은 객체가 디스크에 저장되면 정상적으로 저장되지 않는다.

  - add(), get(), remove()

 

  // Add, Get

 CacheManager singletonManager= CacheManager.create();

 singletonManager.addCache("testCache");

 Cache test = singletonManager.getCache("testCache");

 

 // Remove

 CacheManager singletonManager= CacheManager.create();

 singletonManager.removeCache("sambleCache1");

 

 

Cache 관리정보 조회

 - 사용중인 Cache 객체의 리소스 사용량을 구할 수 있다.

 - 다양한 통계 정보도 제공한다.

 

  Cache cache= singletonManager.getCache("testCache");

  

  //리소스 사용량

  int elementsInMemory = cache.getSize();

  long elementsInMemory = cache.getMemoryStoreSize();

  long elementsInMemory = cache.getDiskStoreSize();

 

  //통계 정보

  int hists1 = cache.getHitCount();

  int hists2 = cache.getMemoryStoreHitCount();

  int hists3 = cache.getDiskStoreCount();

  int miss1 = cache.getMissCountNotFound();

  int miss2 = cache.getMissCountExpired();

  

 

캐시 동기화 방식

 - Ehcache의 경우 데이터 복제를 위한 3가지 방식을 지원

 - RMI 방식

     * 자바에서 기본적으로 제공하는 RMI를 사용

     * 검증된 안전한 기술

  - JGroups 방식

     * UDP 기반의 라이브러리

     * JBoss Session Clustering

  - JMS 방식

     * JMS 메시지를 이용하여 데이터 동기화

 

 

 http://www.ehcache.org/documentation/user-guide/storage-options

반응형