7点微信公众号:请点这里。7点测试网QQ总群:277957570。

7点测试网

 找回密码
 注册7点

QQ登录

只需一步,快速开始

查看: 933|回复: 0
打印 上一主题 下一主题

Ehcache Storage Options

[复制链接]
跳转到指定楼层
1#
发表于 2013-12-3 14:50:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式



简介





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文件。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享
您需要登录后才可以回帖 登录 | 注册7点

本版积分规则

QQ|Archiver|手机版|小黑屋|7点测试网 ( 京ICP备09084002号

GMT+8, 2018-5-24 01:11 , Processed in 0.111913 second(s), 19 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表