`

【转】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还支持数据持久化,能够在VM重启后恢复磁盘上的缓存数据,确保数据不丢失。它还提供缓存刷写功能,允许用户通过`cache.flush()`方法将缓存条目写回磁盘。 此外,Ehcache集成了JMX(Java Management ...

    ehcache-2.9.0

    它可以将内存中的缓存数据持久化到磁盘上,即使在系统重启后,也能恢复之前的状态,降低了数据丢失的风险。 总的来说,Ehcache-2.9.0作为一个成熟的缓存解决方案,集成了内存缓存、分布式缓存、缓存策略、动态管理...

    ehcache资料(包含ehcache jar包)

    2. **磁盘存储**:当内存空间不足时,Ehcache可以将部分数据溢写到硬盘上,形成持久化缓存,以防止数据丢失。 3. **缓存过期策略**:Ehcache允许设置时间、访问次数等条件来控制缓存项的生命周期,确保数据的时效性...

    Ehcache缓存

    1. **内存和磁盘缓存**:Ehcache不仅可以将数据存储在内存中,还可以在磁盘上持久化,防止数据丢失。 2. **分布式缓存**:通过添加Terracotta服务器,Ehcache可以实现分布式缓存,让多台服务器共享同一份缓存,提高...

    Java缓存框架 EhCache

    2. **持久化**:除了内存缓存外,EhCache还支持磁盘缓存,可以在内存不足或达到特定条件时将数据写入硬盘,保证数据不会丢失。此外,还可以配置缓存的生命周期,当缓存项超过预设的时间未被访问,将自动从缓存中移除...

    ehcache使用详解

    同时,Ehcache 还可以将缓存数据持久化到磁盘,以防止系统重启后数据丢失。 Ehcache 支持缓存分区,可以分为本地缓存和分布式缓存。在分布式环境中,多个Ehcache 实例可以通过Terracotta服务器实现共享和同步,提供...

    ehcache2.4.3

    6. **磁盘持久化**:除了内存存储,Ehcache还支持将数据持久化到硬盘,防止因系统重启导致的数据丢失。 【标签】"jar"表明这是一个Java Archive文件,它是Java平台的标准封装格式,包含编译后的类文件和其他资源,...

    ehcache配置使用详解

    5. **缓存数据持久化**:ehcache能够在虚拟机重启时,将缓存数据写入磁盘,避免数据丢失。 6. **分布式缓存**:通过RMI(Remote Method Invocation)和可插拔API,ehcache支持跨机器的缓存共享,适用于集群环境。 7....

    ehcache官方文档

    - **持久化**:可以配置Ehcache将缓存数据存储到硬盘上,以防止应用重启后数据丢失。 - **缓存分区**:Ehcache支持将缓存划分为不同的区域,每个区域有自己的配置,这有利于管理和优化不同类型的缓存需求。 4. **...

    ehcache技术详解

    - `diskPersistent`:是否使磁盘缓存持久化,即使应用重启也不会丢失数据。 - `diskSpoolBufferSizeMB`:磁盘缓存写入操作的缓冲区大小。 - `timeToIdleSeconds`:设置缓存条目闲置多久后会被自动删除。 - `...

    ehcache的配置参数详解

    此外,对 `diskStore` 的恰当配置确保了在内存资源紧张时,仍然能够通过磁盘缓存维持缓存服务的连续性,避免因内存限制导致的数据丢失或性能下降。总之,掌握ehcache的这些核心配置,对于构建高性能、高可用的Java...

    Java流行ehcache缓存

    - **持久化**:支持将缓存数据存储到硬盘,防止数据丢失。 - **缓存过期策略**:可以设置时间或访问次数限制,使得缓存项在达到指定条件后自动失效。 - **多级缓存**:提供内存、硬盘和分布式缓存的多级缓存解决...

    ehcache资料(个人整理的)

    2. **磁盘存储**:当内存不足时,Ehcache能够将部分数据溢写到磁盘上,实现持久化存储,避免数据丢失。 3. **多级缓存**:Ehcache支持二级缓存架构,即本地缓存和分布式缓存。这使得在大型分布式系统中,多个节点间...

    ehCache2.6.8

    - **持久化**:磁盘缓存功能可以在内存满时将数据写入硬盘,避免数据丢失。 - **缓存同步**:支持多线程环境下的并发控制,确保数据一致性。 - **分布式缓存**:通过Terracotta服务器实现分布式缓存,提高可扩展...

    ehcache.zip

    10. **缓存持久化**:当内存缓存满时,Ehcache可以将超出容量的数据写入持久化存储,确保数据不会丢失。 在使用"ehcache.zip"这个压缩包时,你需要将其解压,并将包含的jar文件添加到你的项目类路径中。如果遇到...

    ehcache缓存入门项目

    当内存中的缓存数据达到上限或为了防止数据丢失,EhCache支持将数据持久化到硬盘,这样即使服务器重启,数据也能恢复。 9. **最佳实践** - 应合理设置缓存大小,避免内存溢出。 - 对于敏感数据,需考虑安全性和...

    ehcache和memcache性能比较

    它不支持持久化存储,所有的数据都存储在内存中,因此读写速度非常快。Memcached的键值对存储模型简单易用,适合快速存储和检索大量小数据,如session信息或网页片段。 性能方面,由于Memcached只在内存中存储数据...

    ehcache-1.5.0-beta2

    它在内存中存储数据,提供快速的数据检索,并可选地将数据持久化到磁盘,以防止数据丢失。Ehcache-1.5.0-beta2是这个库的一个早期版本,包含了一些新的特性和改进。 在提供的压缩包文件中,我们可以看到以下几个...

    ehcache-web-2.0.4-distribution.gz

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

Global site tag (gtag.js) - Google Analytics