Ehcache学习(六)缓存机制
2009-07-09 11:02
288 查看
Ehcache Storage Options http://blog.csdn.net/mgoann/archive/2009/04/20/4094768.aspx 简介 Ehcache俩中缓存机制: · MemoryStore(内存存储) · DiskStore(磁盘存储) MemoryStore MemoryStore总是可用的,但不可直接操作,当中存储着所有的Cache。 · 合适的Element类型 所有的Element都可以放在MemoryStore中。 · 安全性:使用多个线程并行检查内存泄露。 · JDK:使用了JDK1.5的LinkedHashMap来存放Elemen。t · 快速的:是最快的缓存机制,因为它是存放在内存中。 · 失效策略(Memory) Cache可以配置最大缓存Element的个数,以及失效时间。如果在添加Elemtent时,缓存中的Element个数达到了最大缓存数并且overflowToDisk配置的属性为true,Ehcache会更具配置项MemoryStoreEvictionPolicy的失效策略将Element输出到磁盘。如果overflowToDisk为fasle,Ehcache将删除内存中Element。Ehcache支持三种失效策略:LRU、LFU、FIFO。 值得注意的是缓存中失效的Element并不会别马上清理掉,所以想得到内存的真实大小应该调用方法calculateInMemorySize()方法。 DiskStore DiskStore可缓存到外部设备上(硬盘)。 · DiskStores are Optional Ehcache从1.5版本开始支持DiskStore。如果你需要多个DiskStore的话,最好给他们配置不同的文件路径。 · 关闭磁盘缓存:只要注释掉ehcache.xml配置文件中的磁盘缓存配置项即可。而ehcache-failsafe.xml的磁盘缓存配置不会影响到你自己的cache。 · 合适的Element类型 这里要注意要想使用磁盘缓存,缓存的Element必须实现序列化接口。否则会抛出NotSerializableException异常。 · 存储:Ehcache会将每个缓存配置的文件路径下创建一个cache_name.data文件,如果使用的磁盘持久化技术,还会生成一个cache name.index文件。 · 失效 Ehcache有一个后天线程专门做Ellment失效监测以及清除工作。设置线程运行间隔时间,可通过设置diskExpiryThreadIntervalSeconds属性来完成,此值不宜设置过低,否则会导致清理线程占用大量CPU资源。默认值是120秒。 · 持久化 持久化可在Element的diskPersistent配置项中配置,如果配置为“false”或是“omitted”在CacheManager shutdown或是startup后,用来缓存Element的文件将被清除掉。如果设置为“true”,data和index文件会被保存下来,对于新创建的CacheManager Element也是可用的。 使用时必须显示调用cache. Flush()才会将数据缓存到磁盘中。 磁盘缓存步骤:从MemoryStore中把没有失效的Element刷新到DiskStore,Element被写入到data文件,Element将被序列化到index文件。 Ehcache缓存回收策略 简介 缓存回收就是当缓存满了的时候,Ehcache会根据指定的策略来清理缓存。这里的缓存回收策略有别与Ehcache中的失效清理策略。失效清理策略是对失效的Element进行批量清理时所采用的策略,最终所有失效的Element都将被清理,只不过是清理的先后顺序不同罢了。Ehcache中缓存的最大Element数是由maxElementsInMemory来指定的。当缓存中的Element个数达到maxElementsInMemory指定的值时,Ehcache会根据具体的策略来清理缓存,默认的策略是LRU(最近最少使用)。 磁盘缓存大小默认是没有限制的,不过可通过maxElementsOnDisk来指定。当磁盘缓存达到maxElementsOnDisk指定的值时,Ehcache会清理磁盘中的缓存使用默认策略是LFU(使用频率最低)。 MemoryStore回收策略 MemoryStore支持三种策略:LRU、LFU、FIFO。
相关文章推荐
- Spring学习之缓存机制EhCache---Key
- Spring学习之缓存机制EhCache
- Spring学习之缓存机制EhCache---Condition
- Spring控制Hibernate的缓存机制ehcache
- MyBatis学习——MyBatis与Ehcache缓存插件整合
- Java缓存学习之六:Spring单独使用EhCache
- Ehcache学习(四)ehcache缓存共享
- SpringMvc Ehcache 实现缓存机制
- MySQL的查询缓存机制基本学习教程
- MyBatis学习手记(二)MyBatis缓存机制
- 学习ASP.NET的缓存依赖机制-SQL缓存依赖篇
- mybatis学习教程中级(十)mybatis和ehcache缓存框架整合(重点)
- 【spring-boot】spring-boot集成ehcache实现缓存机制
- mybatis的缓存机制(一级缓存二级缓存和刷新缓存)和mybatis整合ehcache
- Java缓存学习之三:CDN缓存机制
- MyBatis学习(五)-缓存机制
- Android缓存机制学习
- 15 hbase 学习(十五)缓存机制以及可以利用SSD作为存储的BucketCache
- mybatis的缓存机制(一级缓存二级缓存和刷新缓存)和mybatis整合ehcache
- spring学习之---缓存机制