【问题标题】:EHCache write-behind possible issue if system crashes如果系统崩溃,EHCache 可能会出现后写问题
【发布时间】:2011-10-01 08:27:10
【问题描述】:

缓存新手...

我正在研究 Spring 的 EHCache,我发现它的“后写”新特性非常有趣。数据首先写入缓存,然后以异步方式写入底层数据库,通过时移、速率限制或合并(顺便说一句,其他缓存是否具有相同的功能?)来减少数据库的负载。这听起来很适合我的需要。

现在..

如果我的服务器/系统/缓存因任何原因严重崩溃(我的意思是非常严重),会发生什么?我会丢失存储在缓存中等待加载到数据库中的数据吗?我可以通过使用“大内存”或“磁盘存储”来防止这种情况发生吗?这些选项是否方便?

非常感谢。

【问题讨论】:

  • 这样做会丢失一小部分数据,除非数据源有某种错误更正

标签: spring caching ehcache


【解决方案1】:

【讨论】:

  • Terracotta 允许配置持久写入磁盘...这意味着它的事务和数据文件没有损坏。您甚至可以杀死进程,并且缓存数据在下次重启时仍然存在(将从磁盘加载回来)
【解决方案2】:

我是否会丢失存储在缓存中等待加载到数据库中的 [原文如此] 数据?

是的,你会的。这是您必须接受的“后写”缓存的权衡。

如果您需要事务完整性,则需要直接写入事务后备存储,然后从缓存中刷新条目(“回写”),或者与写入数据存储同步更新缓存( “直写”)。

【讨论】:

  • 谢谢 skaffman,我相信缓存到磁盘内存可以防止这个问题发生,对吧?我只是在考虑性能权衡,但我不确定缓存速度较慢是否有意义..
猜你喜欢
  • 2022-08-07
  • 2022-11-11
  • 1970-01-01
  • 2019-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多