开发者社区> 问答> 正文

spingmvc ecache 在tomcat非正常关闭后,重启tomcat之前的缓存没了?:报错

spingmvc+ecache 在tomcat正常启动后,缓存了一个对象A的list组数据,当tomcat非正常关闭(即停电、死机、关闭黑窗口的X)时,查看tomcat的缓存文件夹***.data和***.index文件夹都存在有大小的数据库文件1kB(1~2条测试数据)。这事重启后并没有读取到原来额数据,这时***.data文件变成0kB,请大神分享下再tomcat非正常关闭后,数据缓存持久化磁盘恢复呢?

ecache的xml部分配置。


<cache name="system.Vote" maxElementsOnDisk="20000"
		maxElementsInMemory="2000" eternal="true" overflowToDisk="true"
		diskPersistent="true" />
public static CacheManager getCacheManager(){
		return CacheManager.getInstance();
	}
部分java代码



Element element = new Element("votes", votes);
			cache.put(element);
			cache.flush();

public static List<Vote> getVotes(){
		Cache cache = CacheManager.getCache("system.Vote");
		Element element = cache.get("votes");
		cache.flush();
		if(element != null){
			List<Vote> list = (List<Vote>) element.getValue();
			return list;
		}else{
			return null;
		}





展开
收起
kun坤 2020-06-07 21:09:26 530 0
1 条回答
写回答
取消 提交回答
  • ehcache 和其他缓存类似,需要flush 或者shutdown 才会持久化到硬盘.######参考这篇博客: http://greemranqq.iteye.com/blog/2164243######

    你可以引入数据库啊,达到你要的效果,放redis。

    2020-06-07 21:09:31
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
基于英特尔 SSD 的虚拟机缓存解决SSD 立即下载
用户态高速块缓存方案 立即下载
高性能Web架构之缓存体系 立即下载