`
slqprrx
  • 浏览: 12198 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ehcache2.4源码分析 ---- 持久化

阅读更多
参数:
overflowToDisk="true"  当为true时会持久化到硬盘,并非超出内存最大数时才会
diskPersistent="true"  当为false时,manager.shutdown()时会清空硬盘文件,下次启动时不会读取。为true时,manager.shutdown()时会保留硬盘文件,下次启动会读取。

当缓存为可持久化时,会用到这个工具
net.sf.ehcache.store.disk.DiskStorageFactory
protected DiskMarker write(Element element) throws IOException
protected Element read(DiskMarker marker) throws IOException, ClassNotFoundException

写的时候,put内存成功后,比如当前硬盘文件为空,则data文件的末尾position=0,element序列化后,用java.io.RandomAccessFile把内容异步写进硬盘。同时内存中data文件的末尾position+内容的size,而本element的position和size将会在内存中记录。如果不为空,则从内存中读出当前的data文件的末尾position来用。

data文件的末尾position这个值,他维护了一棵所有position组成的AA树。从这个树里找到最大的返回。我没看明白这个树有什么毛用,可能是为了以后的功能而预先写在这里的吧。也许在更高的版本里就有用了

当manager.shutdown()时,先生成一个XXX.index文件,把内存中记录的所有element的position和size都写进这个文件里。同时data文件的末尾position也会写进去。

当启动的时候,首先会把XXX.index里的内存全部加进内存,这相当于一个索引嘛。
当你get key='asd'时,先看索引里有没有asd,没有则不查硬盘data,有则先看内存中有无本element,有则取出返回,没有则取出其position和size,把data中的相应内容读出。先缓存到内存,再return.


我那天在网上看到有些朋友想用ehcache代替nosql,看了我上面的文章后,你不要再做这事了。这两种东西完全不是一个级别的东西。ehcache就是个缓存,没啥安全措施等数据库要有的特性。也存不了特大的文件。
分享到:
评论

相关推荐

    ehcache监控工具ehcache-monitor-kit-1.0.3

    1.解压缩到目录下,复制ehcache-monitor-kit-1.0.0\lib\ehcache-probe-1.0.0.jar包到application的web-inf/lib目录下 2.将以下配置copy的ehcache.xml文件的ehcache标签中,注:上述链接中说的配置少写了个probe包名...

    Ehcache 3(ehcache-clustered-3.8.1-kit.zip)

    Ehcache 3 提供了丰富的功能,包括本地内存缓存、磁盘持久化、多线程支持以及在分布式环境中实现集群共享缓存的能力。在"ehcache-clustered-3.8.1-kit.zip"这个压缩包中,我们重点关注的是Ehcache的集群支持版本,这...

    ehcache-core-2.6.11-API文档-中英对照版.zip

    赠送jar包:ehcache-core-2.6.11.jar; 赠送原API文档:ehcache-core-2.6.11-javadoc.jar; 赠送源代码:ehcache-core-2.6.11-sources.jar; 赠送Maven依赖信息文件:ehcache-core-2.6.11.pom; 包含翻译后的API文档...

    Mybatis-ehcache 1.2.1源码(ehcache-cache-mybatis-ehcache-1.2.1.zip)

    源码分析主要关注以下几个方面: 1. **集成机制**:Mybatis-ehcache是如何将Ehcache的缓存功能整合到Mybatis的SQL映射框架中的。这通常涉及到自定义拦截器或者插件,通过拦截Mybatis的SQL执行过程,实现对查询结果...

    ehcache1.6 和 ehcache-web-2.0.4

    它在内存中存储数据,提供快速的数据检索,并可选地将数据持久化到磁盘,以便在应用程序重启后仍能使用。Ehcache 1.6是其早期版本,而ehcache-web-2.0.4则是与Web应用相关的扩展模块。 Ehcache 1.6包含了核心的缓存...

    ehcache.rar ehcache-core-2.6.10.jar依赖包

    ehcache-core-2.6.10.jar依赖包 MyBatiesEhCache二级缓存 Ehcache是一种广泛使用的开源Java分布式缓存。主要面向通用缓存,Java EE和轻量级容器。它具有内存和磁盘存储,缓存加载器,缓存扩展,缓存异常处理程序,一个...

    ehcache.jar及源码

    `ehcache-core-2.5.2-sources.jar`则是Ehcache的源代码文件,开发者可以查看源码来理解Ehcache的工作原理,进行调试,或根据需要自定义扩展。源码库包含所有类的定义、方法实现以及注释,对于深入学习和定制Ehcache...

    Mybatis-ehcache 1.2.1源码(ehcache-cache-mybatis-ehcache-1.2.1.tar

    通过对 Mybatis-ehcache 1.2.1 的源码学习,开发者可以更好地理解缓存如何与 ORM 框架协同工作,优化数据库交互,同时也能为自定义缓存解决方案提供参考。在实际开发中,结合缓存策略和监控,可以进一步提升系统的...

    ehcache-web-2.0.4-API文档-中文版.zip

    赠送jar包:ehcache-web-2.0.4.jar; 赠送原API文档:ehcache-web-2.0.4-javadoc.jar; 赠送源代码:ehcache-web-2.0.4-sources.jar; 赠送Maven依赖信息文件:ehcache-web-2.0.4.pom; 包含翻译后的API文档:...

    ehcache2-7-3 源码

    5. **缓存扩展**:Ehcache支持通过插件进行扩展,比如分布式缓存、持久化存储等。源码中会包含插件的接口和实现,这对于构建分布式系统或者自定义缓存解决方案非常有价值。 6. **缓存事件**:Ehcache提供了丰富的...

    ehcache-core-2.6.11-API文档-中文版.zip

    赠送jar包:ehcache-core-2.6.11.jar; 赠送原API文档:ehcache-core-2.6.11-javadoc.jar; 赠送源代码:ehcache-core-2.6.11-sources.jar; 赠送Maven依赖信息文件:ehcache-core-2.6.11.pom; 包含翻译后的API文档...

    ehcache-3.9.9-API文档-中英对照版.zip

    赠送jar包:ehcache-3.9.9.jar; 赠送原API文档:ehcache-3.9.9-javadoc.jar; 赠送源代码:ehcache-3.9.9-sources.jar; 赠送Maven依赖信息文件:ehcache-3.9.9.pom; 包含翻译后的API文档:ehcache-3.9.9-javadoc-...

    shiro-ehcache-1.4.0-API文档-中文版.zip

    赠送jar包:shiro-ehcache-1.4.0.jar; 赠送原API文档:shiro-ehcache-1.4.0-javadoc.jar; 赠送源代码:shiro-ehcache-1.4.0-sources.jar; 赠送Maven依赖信息文件:shiro-ehcache-1.4.0.pom; 包含翻译后的API文档...

    ehcache缓存jar(ehcache-core-2.4.6.jar+ehcache-web-2.0.4.jar)

    ehcache缓存jar(ehcache-core-2.4.6.jar+ehcache-web-2.0.4.jar)

    ehcache-spring-annotations-1.2.0.jar

    ehcache-spring-annotations-1.2.0.jar

    ehcache-web-2.0.4-API文档-中英对照版.zip

    赠送jar包:ehcache-web-2.0.4.jar; 赠送原API文档:ehcache-web-2.0.4-javadoc.jar; 赠送源代码:ehcache-web-2.0.4-sources.jar; 赠送Maven依赖信息文件:ehcache-web-2.0.4.pom; 包含翻译后的API文档:...

    ehcache-spring-annotations-1.1.2.jar

    ehcache-spring-annotations-1.1.2.jar

    ehcache-3.3.1-API文档-中英对照版.zip

    赠送jar包:ehcache-3.3.1.jar; 赠送原API文档:ehcache-3.3.1-javadoc.jar; 赠送源代码:ehcache-3.3.1-sources.jar; 赠送Maven依赖信息文件:ehcache-3.3.1.pom; 包含翻译后的API文档:ehcache-3.3.1-javadoc-...

    ehcache-web-2.0.4-distribution.gz

    1. **内存和磁盘存储**:Ehcache可以将数据存储在内存中,以实现快速访问,同时还可以利用硬盘空间进行持久化存储,防止数据丢失。 2. **自动扩展**:当内存缓存满时,Ehcache能够自动将较不频繁访问的数据移到磁盘...

    Ehcache 2.10.8(bigmemory-max-4.3.8.4.2.tar.gz)

    Ehcache是一款广泛使用的开源Java缓存解决方案,它允许开发者在应用程序中添加高效的缓存机制,从而提升性能和响应速度。Ehcache 2.10.8是该产品的特定版本,它包含了针对缓存管理和优化的一系列特性和改进。在...

Global site tag (gtag.js) - Google Analytics