ehcache 让内容一直持久化在磁盘,防止异常丢失
来源:互联网 发布:linux进程间通讯机制 编辑:程序博客网 时间:2024/06/05 14:22
公司让做一个项目,客户提交一批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>
于是我把这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>
阅读全文
0 0
- ehcache 让内容一直持久化在磁盘,防止异常丢失
- 使用ehcache时如何持久化数据到磁盘,并且在应用服务器重启后不丢失数据
- ehcache时如何持久化数据到磁盘,并且在应用服务器重启后不丢失数据
- EhCache参数及磁盘持久化加载
- 防止异常丢失
- ehcache持久化
- 妙不可言的session之防止内容丢失
- EhCache缓存框架(2)-EhCache持久化
- 直击Redis持久化磁盘IO痛点,让存储不再有负担!
- Ehcache配置持久化到硬盘
- Ehcache 配置持久化到硬盘
- Ehcache配置持久化到硬盘
- 如何让程序在锁屏后还一直运行
- Redis持久化-数据丢失及解决
- Redis持久化-数据丢失及解决
- aerospike 持久化磁盘时,namespace与磁盘的关系
- 让手写输入在 Web 上持久留存
- 在HBuiler+MUI中如何防止用户一直返回
- C#请写出代码判断一个整数是不是2的幂次方
- 习题6(6.15)
- JavaSpark-数据读存-JSON
- openssl 对称加密算法enc命令详解
- K-中心点PAM实例
- ehcache 让内容一直持久化在磁盘,防止异常丢失
- java反射机制
- vSAN快讯
- leetcode--19. Remove Nth Node From End of List
- 3.2 Hibernate-Inheritance
- 最短路径--算法2
- 自顶向下,逐步求精
- 简单的字符驱动初始化
- [SDOI2015]序列统计 (NTT:快速数论变换 + 快速幂)