本文主要是介绍Ehcache(2),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
二.配置文件ehcache.xml
首先,我们需要一个配置文件ehcache.xml(名字可以改变),主要内容如下
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd"></ehcache>
这是根节点的两个标签,我们配置的内容在这里面,主要介绍一下几个常用标签
1.diskStore
指定磁盘的存储路径
2.defaultCache
默认的cache配置,如果创建了一个没有指定属性的cache,那么将默认继承该配置
3.cache
cache的配置,在其中指定这个cache的属性
标签下有这些属性,
maxElementsInMemory:缓存最大的元素个数
eternal:默认为false,如果为true,则忽略timeToIdleSeconds和timeToLiveSeconds,cache中的元素不会过期
timeToIdleSeconds:表示一个元素所允许闲置的最大时间,也就是说一个元素在不被请求的情况下允许在缓存中待的最大时间。默认是0,表示不限制
timeToLiveSeconds:单位是秒,表示无论一个元素闲置与否,其允许在Cache中存在的最大时间。默认是0,表示不限制
overflowToDisk:默认为false,当内存里面的缓存已经达到预设的上限时是否允许将按驱除策略驱除的元素保存在磁盘上了,如果为false则表示元素不会到磁盘盘上,只会在内存中
maxElementsOnDisk:磁盘中最大的元素数量
diskExpiryThreadIntervalSeconds: 单位是秒,表示多久检查元素是否过期的线程多久运行一次,默认是 120 秒
memoryStoreEvictionPolicy:采用的驱除策略
copyOnWrite:默认为false。当设置为true时,读入缓存中的是该对象的一个备份
copyOnRead:默认为false。当设置为true时,从缓存中取出的时候是缓存中对象的一个备份
下面写个程序说明一下copyOnWrite和copyOnRead
CacheManager cm = new CacheManager();Cache c1 = cm.getCache("cache1");// cache1的copyOnRead为true,copyOnWrite为trueElement e1 = new Element("e1", new Integer(1));c1.put(e1);// 根据copyOnWrite,放入缓存中的是e1的拷贝对象Element e11 = c1.get("e1");System.out.println(e1 == e11);// falseCache c2 = cm.getCache("cache2");// cache2的copyOnRead为true,copyOnWrite为falseElement e2 = new Element("e2", new Integer(1));c2.put(e2);// 根据copyOnRead,从缓存中取出的是内存中对象拷贝对象Element e22 = c2.get("e2");System.out.println(e2 == e22);// falseCache c3 = cm.getCache("cache3");// cache2的copyOnRead为false,copyOnWrite为trueElement e3 = new Element("e3", new Integer(1));c3.put(e3);// 根据copyOnWrite,放入缓存中的是e1的拷贝对象Element e33 = c2.get("e3");System.out.println(e3 == e33);// false
这篇关于Ehcache(2)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!