<?xml version="1.0" encoding="UTF-8"?> <ehcache name="orientsec" updateCheck="false"> <!-- 磁盘缓存位置 --> <diskStore path="java.io.tmpdir"/> <!-- maxEntriesLocalHeap:堆内存中最大缓存对象数,0没有限制 --> <!-- maxElementsInMemory: 在内存中缓存的element的最大数目。--> <!-- maxElementsOnDisk 在硬盘上最大的对象个数, 硬盘管理的缓存元素数量最大限值。默认值为0,就是没有限制--> <!-- eternal:elements是否永久有效,如果为true,timeouts将被忽略,element将永不过期 --> <!-- timeToIdleSeconds:失效前的空闲秒数,当eternal为false时,这个属性才有效,0为不限制 --> <!-- timeToLiveSeconds:失效前的存活秒数,创建时间到失效时间的间隔为存活时间,当eternal为false时,这个属性才有效,0为不限制 --> <!-- overflowToDisk: 如果内存中数据超过内存限制,是否要缓存到磁盘上 --> <!-- statistics:是否收集统计信息。如果需要监控缓存使用情况,应该打开这个选项。默认为关闭(统计会影响性能)。设置statistics="true"开启统计 --> <!-- diskPersistent:是否在VM重启时存储硬盘的缓存数据。默认值是false。 --> <!-- 默认缓存 --> <defaultCache maxEntriesLocalHeap="1000" eternal="false" timeToIdleSeconds="3600" timeToLiveSeconds="3600" overflowToDisk="false"> </defaultCache> <!-- 内容访问统计 --> <cache name="ContentCount" maxElementsInMemory="1000" maxElementsOnDisk="1000" eternal="false" overflowToDisk="true" timeToIdleSeconds="0" timeToLiveSeconds="0"> </cache> </ehcache>
name: 缓存的名称。
maxElementsInMemory: 缓存中最大元素个数。0表示不限制
eternal: 对象是否永久有效,一但设置了,timeout将不起作用,元素永久存在。
clearOnFlush: 内存数量最大时是否清除。
timeToIdleSeconds : 设置对象在失效前的允许闲置时间(单位:秒)。仅当eternal=false对象不是永久有效时使用,可选属性,默认值是0,也就是可闲置时间无穷大。
timeToLiveSeconds: 设置对象在失效前允许存活时间(单位:秒)。最大时间介于创建时间和失效时间之间。仅当eternal=false对象不是永久有效时使用,默认是0.,也就是对象存活时间无穷大。
diskExpiryThreadIntervalSeconds: 磁盘失效线程运行时间间隔,默认是120秒。
diskPersistent: 是否在VM重启时存储硬盘的缓存数据。默认值是false。
maxElementsOnDisk: 硬盘最大缓存个数。
overflowToDisk: 当内存中对象数量达到maxElementsInMemory时,Ehcache将会对象写到磁盘中。
diskSpoolBufferSizeMB: 这个参数设置DiskStore(磁盘缓存)的缓存区大小。默认是30MB。每个Cache都应该有自己的一个缓冲区。
maxEntriesLocalDisk: 当内存中对象数量达到maxElementsInMemory时,Ehcache将会对象写到磁盘中。
memoryStoreEvictionPolicy: 当达到maxElementsInMemory限制时,Ehcache将会根据指定的策略去清理内存。默认策略是LRU(最近最少使用)。你可以设置为FIFO(先进先出)或是LFU(较少使用)。
现在假设有如下配置:
timeToIdleSeconds=60
timeToLiveSeconds=180
则一个数据被添加进缓存后,该数据能够在缓存中存活的最长时间为180秒(timeToLiveSeconds),而在180秒内,假设不止一次去缓存中拿取该数据,那么相邻2次获取数据的时间间隔如果小于60秒(timeToIdleSeconds),则能成功获取到数据,但如果最近一次获取到下一次获取的时间间隔超过60秒,那么,将得到null,因为此时该数据已经被移出缓存了。
而且,timeToLiveSeconds必须大于timeToIdleSeconds才有意义。
关注"都市百货" 了解南陵
微信咨询wanglf2r(不拉群 发广告者勿加)
热门评论