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都应该有自己的一个缓冲区。
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
<?xml version="1.0" encoding="UTF-8"?>
<ehcache>
<diskStore path="java.io.tmpdir" />
<defaultCache
maxElementsInMemory="10000"
eternal="false"
timeToIdleSeconds="120"
timeToLiveSeconds="120"
overflowToDisk="true"
diskPersistent="false"
diskExpiryThreadIntervalSeconds="120"
memoryStoreEvictionPolicy="LRU"
/>
<cache name="recommend"
maxElementsInMemory="10000"
maxElementsOnDisk="10000000"
eternal="false"
timeToIdleSeconds="1440"
diskPersistent="false"
timeToLiveSeconds="600"
overflowToDisk="false"
memoryStoreEvictionPolicy="LRU">
<cacheEventListenerFactory class="com.jwzt.ehcache.NotNullCacheEventListenerFactory" />
</cache>
<cache name="video"
maxElementsInMemory="10000"
maxElementsOnDisk="10000000"
eternal="false"
timeToIdleSeconds="1440"
diskPersistent="false"
timeToLiveSeconds="7200"
overflowToDisk="false"
memoryStoreEvictionPolicy="LFU">
<cacheEventListenerFactory class="com.jwzt.ehcache.NotNullCacheEventListenerFactory" />
</cache>
</ehcache>
import java.util.Properties;
import net.sf.ehcache.event.CacheEventListener;
import net.sf.ehcache.event.CacheEventListenerFactory;
public class NotNullCacheEventListenerFactory extends CacheEventListenerFactory {
@Override
public CacheEventListener createCacheEventListener(Properties arg0) {
System.out.println("进入监听");
// TODO Auto-generated method stub
return NotNullCacheEventListener.INSTANCE;
}
}
import org.apache.log4j.Logger;
import net.sf.ehcache.CacheException;
import net.sf.ehcache.Ehcache;
import net.sf.ehcache.Element;
import net.sf.ehcache.event.CacheEventListener;
public class NotNullCacheEventListener implements CacheEventListener {
private static Logger logger = Logger.getLogger(NotNullCacheEventListener.class);
public static final CacheEventListener INSTANCE = new NotNullCacheEventListener();
public void notifyElementRemoved(Ehcache arg0, Element arg1)
throws CacheException {
// TODO Auto-generated method stub
logger.info("通知元素移除"+arg1.getKey());
}
public void notifyElementPut(Ehcache arg0, Element arg1)
throws CacheException {
// TODO Auto-generated method stub
logger.info("通知元素添加"+arg1.getKey());
System.out.println("添加元素"+arg1.getKey());
}
public void notifyElementUpdated(Ehcache arg0, Element arg1)
throws CacheException {
// TODO Auto-generated method stub
logger.info("通知元素修改"+arg1.getKey());
}
public void notifyElementEvicted(Ehcache arg0, Element arg1) {
// TODO Auto-generated method stub
logger.info("通知元素驱赶"+arg1.getKey());
}
public void notifyElementExpired(Ehcache arg0, Element arg1) {
// TODO Auto-generated method stub
logger.info("元素["+arg1.getKey()+"]到达有效时间,系统自动从缓存中清楚");
}
public void notifyRemoveAll(Ehcache arg0) {
// TODO Auto-generated method stub
logger.info("通知元素移除所有");
}
public void dispose() {
// TODO Auto-generated method stub
logger.info("处理,安排");
}
@Override
public Object clone() throws CloneNotSupportedException {
throw new CloneNotSupportedException("Singleton instance");
}
}
import java.util.List;
import net.sf.ehcache.Cache;
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element;
public class Test {
public static void main(String[] args) throws Exception {
//CacheManager manager = new CacheManager("/ehcache1.xml");
final CacheManager manager = CacheManager.create(Test.class.getResourceAsStream("ehcache1.xml"));
Cache cache = manager.getCache("recommend");
for (int i = 0; i < 6; i++) {
Element e = new Element( i, "value" + i);
cache.put(e);
}
List<Integer> keys = cache.getKeys();
for (int key : keys) {
System.out.println(key + "," + cache.get(key));
}
}
}