首页 » 挨踢业 » 正文

ehcache 缓存设置策略

<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:noNamespaceSchemaLocation="ehcache.xsd">  

    <diskStore path="java.io.tmpdir"/>  

         <defaultCache  maxElementsInMemory="10000"  

                                   maxElementsOnDisk="0"  

                                   eternal="true"  

                                   overflowToDisk="true"  

                                  diskPersistent="false" 

                                 timeToIdleSeconds="0"  

                                timeToLiveSeconds="0"  

                               diskSpoolBufferSizeMB="50"  

                              diskExpiryThreadIntervalSeconds="120" 

                              memoryStoreEvictionPolicy="LFU"   />  

        <cache name="cacheName"  

                    maxElementsInMemory="100"  

                   maxElementsOnDisk="0"  

                   eternal="false"  

                  overflowToDisk="false"  

                  diskPersistent="false"  

                  timeToIdleSeconds="119"  

                 timeToLiveSeconds="119"  

                 diskSpoolBufferSizeMB="50"  

                diskExpiryThreadIntervalSeconds="120"  

               memoryStoreEvictionPolicy="FIFO"  /> 

</ehcache>

 

name:Cache的名称,必须是唯一的(ehcache会把这个cache放到HashMap里)。 

maxElementsInMemory:内存中保持的对象数量。 

maxElementsOnDisk:DiskStore中保持的对象数量,默认值为0,表示不限制。 

eternal:是否是永恒数据,如果是,则它的超时设置会被忽略。 

overflowToDisk:如果内存中数据超过内存限制,是否要缓存到磁盘上。 

timeToIdleSeconds:对象空闲时间,指对象在多长时间没有被访问就会失效。只对eternal为false的有效。默认值0,表示一直可以访问。 

timeToLiveSeconds:对象存活时间,指对象从创建到失效所需要的时间。只对eternal为false的有效。默认值0,表示一直可以访问。 

diskPersistent:是否在磁盘上持久化。指重启jvm后,数据是否有效。默认为false。 

diskExpiryThreadIntervalSeconds:对象检测线程运行时间间隔。标识对象状态的线程多长时间运行一次。 

diskSpoolBufferSizeMB:DiskStore使用的磁盘大小,默认值30MB。每个cache使用各自的DiskStore。 

memoryStoreEvictionPolicy:如果内存中数据超过内存限制,向磁盘缓存时的策略。默认值LRU,可选FIFO、LFU。