라이브러리
- 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
'Program > Java' 카테고리의 다른 글
JDK 설치 (0) | 2020.09.10 |
---|---|
JDK(Java Development Kit) , JRE(Java Runtime Environment), JVM(Java Virtual Machine) 란? (0) | 2020.04.28 |
DB Connection Pool (0) | 2019.08.08 |
connection pool leak (커넥션풀 누수) (0) | 2019.08.08 |
JDBC(Java Database Connectivity) (0) | 2019.08.08 |