所需jar :ehcache-2.10.2.jar(最新) slf4j-api.jar(依賴)
classpath :ehcache.xml
<?xml version="1.0" encoding="UTF-8"?>
<ehcache>
<diskStore path="D:/Ehcache" />
<!-- maxElementsInMemory 內存中存儲的對象的個數, 內存管理的緩存元素數量最大限值 -->
<!-- overflowToDisk 對象在內存中達到最大個數的時候,是否寫入硬盤 -->
<!-- eternal 表示cache中的對象是否過期,缺省爲過期(按照配置中的時間),如果改爲true,表示該對象永遠不過期。
即cache中的元素將一直保存在內存中, 不會因爲時間超時而丟失,所以在這個值爲true的時候,
timeToIdleSeconds和timeToLiveSeconds兩個屬性的值就不起作用了 -->
<!-- 如timeToIdleSeconds="3600" 設定元素在過期前空閒狀態的時間,只對非持久性緩存對象有效。即多長時間不訪問該緩存,
那麼ehcache就會清除該緩存。默認值爲0,值爲0意味着元素可以閒置至無限長時間。 -->
<!-- 如timeToLiveSeconds="100000" 設定元素從創建到過期的時間。對象存活多少秒過期.
默認值爲0,值爲0意味着元素可以存活至無限長時間。 意思是從cache中的某個元素從創建到消亡的時間,
從創建開始計時,當超過這個時間,這個元素將被從cache中清除。 -->
<defaultCache
maxElementsInMemory="500"
eternal="false"
timeToIdleSeconds="300"
timeToLiveSeconds="1200"
overflowToDisk="true" />
<cache
name="ehcache"
maxElementsInMemory="1"
eternal="false"
timeToLiveSeconds="36000"
timeToIdleSeconds="3600"
overflowToDisk="true"
diskExpiryThreadIntervalSeconds="5"
/>
</ehcache>
編寫ehcache工具類
public class EhcacheUtil {
private static final String path = "/ehcache.xml";
private URL url;
private CacheManager manager;
private static EhcacheUtil ehCache;
private EhcacheUtil(String path) {
url = getClass().getResource(path);
manager = CacheManager.create(url);
}
public static EhcacheUtil getInstance() {
if (ehCache== null) {
ehCache= new EhcacheUtil(path);
}
return ehCache;
}
public void put(String cacheName, String key, Object value) {
Cache cache = manager.getCache(cacheName);
Element element = new Element(key, value);
cache.put(element);
}
public Object get(String cacheName, String key) {
Cache cache = manager.getCache(cacheName);
Element element = cache.get(key);
return element == null ? null : element.getObjectValue();
}
public Cache get(String cacheName) {
return manager.getCache(cacheName);
}
public void remove(String cacheName, String key) {
Cache cache = manager.getCache(cacheName);
cache.remove(key);
}
}