java - 如何保持缓存与数据库同步?

标签 java spring-mvc ehcache

我们有定期更新的数据库。我正在使用 ehcache 和 mysql 数据库。

现在,一旦数据库更新,我们需要根据更新从数据库中提取一些信息并将其发布到缓存。

  1. 我应该如何使我的数据库与缓存保持同步(缓存应该随着数据库的更新而更新)?
  2. 我怎么知道数据库何时更新?

最佳答案

这是缓存引入的经典问题。当您在数据库和缓存中复制数据时,就会引入一致性问题。

这个问题没有单一的答案。

对于 1,答案取决于防止从缓存中提供陈旧数据的重要性。在某些情况下,这不是问题,使用较短的到期时间即可解决问题。在其他情况下,您必须在缓存中拥有最新数据,然后您必须确保缓存的条目无效。

请注意,以完全安全的方式执行此操作很困难,这就是为什么 Hibernate has so many second level cache strategies ,越来越安全,但也越来越慢。

对于问题 2,这实际上是特定于您的应用程序的。如果只有您的应用程序更新数据库,那么您知道何时使缓存失效。如果数据库在外部更新,您必须让该系统知道您的应用程序——或者至少是缓存——以便它可以发送失效。

关于java - 如何保持缓存与数据库同步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40759479/

相关文章:

java - 抽象类和子类的构造函数注入(inject)

java - 如何为区域设置名称创建本地化字符串?

java - 从数据库加载多个(很多)对象,将其保存在ehcache中并使用主键查询

java - 避免 POJO 类中的重复代码

java - 更改图片时android二进制xml异常

Spring MVC 为 root 提供 404

java - JBoss Cache 和 Ehcache 的性能

java - Hibernate二级缓存ehcache timeToLive太短

java - Mockito验证调用错误

java - 安卓简单的游戏。图像按钮未点击。位图