`

【转】ehcache 让内容一直持久化在磁盘,防止异常丢失

    博客分类:
  • java
 
阅读更多

http://kangzye.blog.163.com/blog/static/3681922320113881344329/

 

      公司让做一个项目,客户提交一批100万的数据上来,程序异步保存提交上来的数据。
于是我把这100万数据缓存在ehcache 里,一开始,保存进去的数据只能读取一次,强行关闭tomcat ,再次读取,缓存的内容就丢失了。经过多次测试发现,当调用 cache.getValue(key) 方法时,xxx.index 文件大小变为0了(我测试只有一条element,取一个即将全部取出,故为0),如果程序非正常关闭,那么xxx.index 文件就永久为0了,xxx.data 倒是还有内容。如果程序正常退出(会触发ehcache 的 despose事件),则xxx.index 索引文件恢复原来的大小。
        后来经过多次测试,发现,cache.flush() 也有效果,于是在每次cache.getValue(key)之后立马执行一下 cache.flush() ,这样ehcache 会将索引(xxx.index)回写到磁盘。这样就不用担心程序是否非正常退出导致缓存丢失了。
附上配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<ehcache>
    <diskStore path="mmsehcache" />

    <defaultCache maxElementsInMemory="10000" eternal="true"
        overflowToDisk="true" />
    <cache 
        name="mms" 
        maxElementsInMemory="0" 
        eternal="true"
        overflowToDisk="true" 
        diskPersistent="true" 
        memoryStoreEvictionPolicy="LFU" >
        <cacheEventListenerFactory class="com.fractal.gateway.util.EhcacheListenerFactory" properties=""/><!--此为监听事件,可去掉-->
    </cache>
</ehcache>

分享到:
评论
1 楼 w11h22j33 2011-11-01  
Ehcache和MemCached比较分析
http://www.zoomhoo.com/thread-831-1-1.html

相关推荐

    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分布式缓存与其在SpringBoot应用

    它具有内存和磁盘存储,缓存加载器,缓存扩展,缓存异常处理程序,一个 gzip 缓存 servlet 过滤器,支持 REST 和 SOAP api 等特点。  优点: 1)快速 2)简单 3)多种缓存策略 4)缓存数据有两级:内存和磁盘...

    ehcache缓存配置详解

    ehcache缓存配置详解 个人通过查资料和实践后总结

    ehcache 缓存

    -- 缓存是否持久 -->  overflowToDisk="true" !-- 是否保存到磁盘,当系统当机时-->  timeToIdleSeconds="300" !-- 当缓存闲置n秒后销毁 -->  timeToLiveSeconds="180" !-- 当缓存存活n秒后销毁-->  ...

    spring+ehcache实例demo

    它具有内存和磁盘存储,缓存加载器,缓存扩展,缓存异常处理程序,一个gzip缓存servlet过滤器,支持REST和SOAP api等特点。 Ehcache最初是由Greg Luck于2003年开始开发。2009年,该项目被Terracotta购买。软件仍然是开源,...

    ehcache-core-2.5.2

    diskPersistent:是否在磁盘上持久化。指重启jvm后,数据是否有效。默认为false。 diskExpiryThreadIntervalSeconds:对象检测线程运行时间间隔。标识对象状态的线程多长时间运行一次。 diskSpoolBufferSizeMB:...

    ehcache开发工具包

    EhCache

    hibernate+ehcache

    hibernate+ehcache hibernate+ehcache hibernate+ehcache hibernate+ehcache hibernate+ehcache

    Ehcache 3(ehcache-3.8.1.jar)

    ehcache-3.8.1.jar

    ehcache 1.5版本异常后附加jar包

    ehcache 1.5版本加入后出异常,只需要加上我这个附加jar包就OK了

    ehcache.jar(含源码)

    它具有内存和磁盘存储,缓存加载器,缓存扩展,缓存异常处理程序,一个gzip缓存servlet过滤器,支持REST和SOAP api等特点。 Ehcache最初是由Greg Luck于2003年开始开发。2009年,该项目被Terracotta购买。软件仍然是开源,...

    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-...

    ehcache的配置参数详解

    hibernate ehcache.xml 配置详解

    ehcache-monitor

    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.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.rar ehcache-core-2.6.10.jar依赖包

    ehcache-core-2.6.10.jar依赖包 MyBatiesEhCache二级缓存 Ehcache是一种广泛使用的开源Java分布式...它具有内存和磁盘存储,缓存加载器,缓存扩展,缓存异常处理程序,一个gzip缓存servlet过滤器,支持REST和SOAP api等特点

    ehcache资料(包含ehcache jar包)

    ehcache资料(包含ehcache jar包)

    spring3整合EhCache注解实例

    spring3整合EhCache注解实例

    Ehcache_Hello

    Ehcache 的一个简单demo案例 了解如何使用ehcache 以及掌握一些基本的api

Global site tag (gtag.js) - Google Analytics