我们有定期更新的数据库。我正在使用ehcache和mysql数据库。
现在,一旦数据库更新,我们需要根据更新从数据库中提取一些信息并将其发布到缓存。
答案 0 :(得分:3)
这是缓存引入的经典问题。您复制数据的那一刻 - 在数据库和缓存中 - 会引入一致性问题。
此问题没有单答案。
对于1,答案取决于防止从缓存提供过时数据的重要性。在某些情况下,这不是问题,使用较短的到期时间将解决它。在其他情况下,您必须在缓存中包含最新数据,然后您必须确保缓存的条目无效。
请注意,以完全安全的方式执行此操作很难,这就是为什么Hibernate has so many second level cache strategies更安全,更安全,但也更慢,更慢。
对于问题2,这是特定于您的申请。如果只有您的应用程序更新数据库,那么您知道何时使缓存无效。如果数据库在外部更新,则必须使该系统知道您的应用程序 - 或至少是缓存 - 以便它可以发送失效。
答案 1 :(得分:0)
有多种方法可以将缓存与数据库同步,但这取决于您使用的缓存。 在分布式缓存中,以下是确保缓存中有效数据的方法。