【问题标题】:Distributed Infinispan Cache as Hibernate L2 Cache Issue分布式 Infinispan 缓存作为 Hibernate L2 缓存问题
【发布时间】:2021-10-03 19:12:50
【问题描述】:

我想创建一个应用程序,我将在其中使用 Hibernate L2 缓存来减少总是向数据库请求数据的不必要性。

在我的应用程序中,超过 80% 的时间是 READ 操作,不到 20% 的时间是创建/更新/删除操作。因此,我认为使用 Hibernate L2 Cache 将是有益的。但是,由于我们要横向扩展应用程序,我们希望使用 Infinispan 作为 Hibernate 的 L2 Cache。

但是有几个问题我们不确定。

  1. 如果我理解正确,Hibernate L2 Cache 应该通过更新缓存来工作,只要有新的创建/更新/删除操作,或者查询之前尚未查询。因此,在连接到同一个数据库的多台服务器设置上,由于存在网络 IO 问题,那么多个更新操作如何在这样的环境中工作?由于2个应用服务器可能同时更新数据库,每个都更新同一个实体到不同的数据,但是由于网络IO问题,Hibernate怎么知道这些数据应该被缓存和同步,而这些数据不应该呢?

【问题讨论】:

  • 对于每个问题,答案是:这取决于您的意愿。如果您可以改进问题,说出您的期望,我可以尝试帮助您进行 Infinispan 配置。

标签: java hibernate caching distributed infinispan


【解决方案1】:

这取决于您使用的是哪种缓存。我建议您在此处使用的失效缓存只会使过时的缓存条目失效。复制缓存会将更改复制到集群中的每个节点。 Hibernate 只是向缓存实现询问缓存条目,如果缓存返回,它将使用它并避免访问数据库。缓存条目是否过时或缓存查找涉及多少阻塞取决于缓存的事务配置。

【讨论】:

    猜你喜欢
    • 2013-02-10
    • 2017-05-12
    • 2015-05-04
    • 2015-04-24
    • 2021-01-10
    • 2016-11-03
    • 2018-12-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多