ehcache 缓存使用

来源:互联网 发布:商业公司顶级域名是 编辑:程序博客网 时间:2024/05/14 21:35
 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

<?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 {@Overridepublic CacheEventListener createCacheEventListener(Properties arg0) {System.out.println("进入监听");// TODO Auto-generated method stubreturn 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 stublogger.info("通知元素移除"+arg1.getKey());}public void notifyElementPut(Ehcache arg0, Element arg1)throws CacheException {// TODO Auto-generated method stublogger.info("通知元素添加"+arg1.getKey());System.out.println("添加元素"+arg1.getKey());}public void notifyElementUpdated(Ehcache arg0, Element arg1)throws CacheException {// TODO Auto-generated method stublogger.info("通知元素修改"+arg1.getKey());}public void notifyElementEvicted(Ehcache arg0, Element arg1) {// TODO Auto-generated method stublogger.info("通知元素驱赶"+arg1.getKey());}public void notifyElementExpired(Ehcache arg0, Element arg1) {// TODO Auto-generated method stublogger.info("元素["+arg1.getKey()+"]到达有效时间,系统自动从缓存中清楚");}public void notifyRemoveAll(Ehcache arg0) {// TODO Auto-generated method stublogger.info("通知元素移除所有");}public void dispose() {// TODO Auto-generated method stublogger.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));        }    }}





0 0