必须属性:
name: Cache的唯一标识名称(缓存区名称,用以区别缓存区,必须唯一
maxEntriesLocalHeap:设置缓存在本地内存中最大缓存项数量,0没有限制
maxEntriesLocalDisk:磁盘中的最大对象数,默认为0不限制
eternal:是否永久有效,如果为true,timeouts将被忽略,element将永不过期
可选属性:
overflowToOffHeap:只能用于企业版本中。设置为true,缓存将使用非堆内存,非堆内存并非由java管理,与java垃圾回收无关。默认为false。
maxBytesLocalHeap:如果设置了这个属性,maxEntriesLocalHeap将不能被利用(定义保存在java虚拟机堆内存中的最大字节数)
maxBytesLocalOffHeap:只能用于企业版本中(设置本缓存区使用的非堆内存的大小。指定此属性,将默认设置overflowToOffHeap为true。如果特别指定了overflowToOffHeap=false,将禁止使用非堆内存)
maxBytesLocalDisk:像maxBytesLocalHeap属性,不过指定得是存储在本地磁盘上的缓存项最大可使用的字节数
timeToIdleSeconds:失效前的空闲秒数,当eternal为false时,这个属性才有效,0为不限制
timeToLiveSeconds:失效前的存活秒数,创建时间到失效时间的间隔为存活时间,当eternal为false时,这个属性才有效,0为不限制
diskExpiryThreadIntervalSeconds:清理保存在磁盘上的过期缓存项目的线程的启动时间间隔,默认120秒。
diskSpoolBufferSizeMB:这个参数设置DiskStore(磁盘缓存)的缓存区大小。默认是30MB。每个Cache都应该有自己的一个缓冲区(写入磁盘的内容将缓存在此区域,使用异步的方式写入磁盘;如果遇到OutOfMemory错误时,可以尝试减小这个值。改进磁盘写入性能时,尝试增加这个值;将日志级别开到trace,当DiskStore执行磁盘写入时,可以看到对应日志)
clearOnFlush:当调用flush()是否清除缓存,默认是true,即清空。
statistics:是否收集统计信息。如果需要监控缓存使用情况,应该打开这个选项。默认为关闭(统计会影响性能)。设置statistics="true"开启统计
memoryStoreEvictionPolicy:内存回收策略(当缓存项达到maxEntriesLocalHeap限制时,剔除缓存项的策略),默认回收策略是:LRU最近最少使用Least Recently Used,其他策略有:先进先出First In First Out,Less Frequently Used使用频率最低
copyOnRead:当缓存项被读出时,是否返回一份它的拷贝(返回对象是缓存中对象的拷贝)。默认fasle。
copyOnWrite:当缓存项被写入时,是否写入一份它的拷贝(写入缓存的是写入对象的拷贝)。默认false
(通过使用< persistence />子元素,可以配置缓存区的持久化策略,主要属性如下:)
strategy:配置缓存区持久化的类型,可选值如下:
* localRestartable -(仅在使用Ehcache企业版时有效。启动RestartStore,拷贝所有的缓存项(包含堆和非堆中的)到磁盘中,此选项提供了缓存快速重启能力以及对磁盘上缓存的容错能力)
* localTempSwap - (当缓存容量达到上线时,将缓存对象(包含堆和非堆中的)交换到磁盘中。“ localTempSwap”并不持久化缓存内容)
* none - (不持久化缓存内容)Does not persist cache entries.
* distributed - (按照<terracotta>标签配置的持久化方式执行。非分布式部署时,此选项不可用)
<cache name="persistentCache" maxEntriesLocalHeap="1000">
<persistence strategy="localTempSwap"/>
</cache>
synchronousWrites:此属性仅在strategy=“localRestartable”时有意义。默认false。设置为true,缓存写入方法在缓存项成功写入磁盘前不会返回
网友评论