一、ehcache.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<ehcache>
<!-- 指定一个文件目录,当EHCache把数据写到硬盘上时,将把数据写到这个文件目录下 -->
<!-- <diskStore path="java.io.tmpdir" /> -->
<!-- 必须要有defaultCache -->
<defaultCache
maxElementsInMemory="10000"
eternal="false"
timeToIdleSeconds="120"
timeToLiveSeconds="120"
diskSpoolBufferSizeMB="30"
maxElementsOnDisk="10"
overflowToDisk="false"
memoryStoreEvictionPolicy="LRU"
diskExpiryThreadIntervalSeconds="120">
</defaultCache>
<!-- 用户安全缓存,beta过期时间1分钟,便于测试 -->
<cache name="userClient"
maxElementsInMemory="10000"
eternal="false"
timeToIdleSeconds="60"
timeToLiveSeconds="61"
diskSpoolBufferSizeMB="30"
maxElementsOnDisk="10"
overflowToDisk="false"
memoryStoreEvictionPolicy="LRU"
diskExpiryThreadIntervalSeconds="120">
</cache>
</ehcache>
二、使用
private static final Cache CACHE_ACTIVITY = CacheManager.create(EhCacheUtils.class.getResourceAsStream("/ehcache.xml"))
.getCache("userClient");
public static String getLocalCache(String key) {
try {
Element element = CACHE_ACTIVITY.get(key);
if(element!=null){
String value=(String)element.getObjectValue();
//log.info("get from EHCache,key:"+key+",value:"+value);
return value;
}
} catch (Exception e) {
log.error(e, e);
}
return null;
}
public static void setLocalCache(String key, String value) {
try {
CACHE_ACTIVITY.put(new Element(key, value));
}catch (Exception e) {
log.error(e, e);
}
}
public static void remove(String key) {
try {
CACHE_ACTIVITY.remove(key);
}catch (Exception e) {
log.error(e, e);
}
}
导入依赖:
<dependency>
<groupId>com.esotericsoftware</groupId>
<artifactId>kryo-shaded</artifactId>
<version>4.0.0</version>
</dependency>