Encache中的参数解释
因为项目需要,要是用到Encache来昨为缓存使用,配置文件中的各类参数如下:
<cache
name="storeCache"
maxElementsInMemory="10000"
eternal="false"
timeToIdleSeconds="0"
timeToLiveSeconds="0"
overflowToDisk="true"
maxElementsOnDisk="10000000"
diskPersistent="false"
diskExpiryThreadIntervalSeconds="120"
memoryStoreEvictionPolicy="LRU"
/>
各参数与其对应的解释如下:
参数 | 解释 |
---|---|
name | Cache的唯一标识 |
maxElementsInMemory | 内存中最大缓存对象数 |
maxElementsOnDisk | 磁盘中最大缓存对象数,若是0表示无穷大 |
eternal | Element是否永久有效,一但设置了,timeout将不起作用 |
overflowToDisk | 配置此属性,当内存中Element数量达到maxElementsInMemory时,Ehcache将会Element写到磁盘中 |
timeToIdleSeconds | 设置Element在失效前的允许闲置时间。仅当element不是永久有效时使用,可选属性,默认值是0,也就是可闲置时间无穷大 |
timeToLiveSeconds | 设置Element在失效前允许存活时间。最大时间介于创建时间和失效时间之间。仅当element不是永久有效时使用,默认是0.,也就是element存活时间无穷大 |
diskPersistent | 是否缓存虚拟机重启期数据 |
diskExpiryThreadIntervalSeconds | 磁盘失效线程运行时间间隔,默认是120秒 |
diskSpoolBufferSizeMB | 这个参数设置DiskStore(磁盘缓存)的缓存区大小。默认是30MB。每个Cache都应该有自己的一个缓冲区 |
memoryStoreEvictionPolicy | 当达到maxElementsInMemory限制时,Ehcache将会根据指定的策略去清理内存。默认策略是LRU(最近最少使用)。你可以设置为FIFO(先进先出)或是LFU(较少使用) |
Encache工具类如下
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);
if (cache==null){
cache=new Cache(cacheName, 1, false, false, 0, 0);
manager.addCache(cache);
}
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) {
Cache cache = manager.getCache(cacheName);
if (cache==null){
cache=new Cache(cacheName, 1, false, false, 0, 0);
manager.addCache(cache);
}
return manager.getCache(cacheName);
}
public void remove(String cacheName, String key) {
Cache cache = manager.getCache(cacheName);
cache.remove(key);
}