当前位置: 首页 > 知识库问答 >
问题:

在Ehcache复制设置中使用timeToIdle秒参数

子车鸿才
2023-03-14

我们使用复制的Tomcat Web服务器设置与两个节点。我们使用 Ehcache 作为 Web 应用程序的 Hibernate 级别 2 缓存提供程序。因此,我们通过 RMI 复制配置了 Ehcache 设置,如官方文档中所述:http://ehcache.org/documentation/user-guide/rmi-replicated-caching。

我们现在对缓存条目使用timeToLiveSeconds参数,并希望切换到timeToIdleSeconds,因为它似乎更有效。但后来我们偶然发现了这个(http://ehcache . org/documentation/user-guide/cache-topology):

空闲时间的使用

空闲时间与复制缓存不一致。由于缓存使用模式,空闲时间使某些条目在某些节点上比在其他节点上活得更长。但是,缓存条目“上次触摸”时间戳不会跨节点复制。不要将空闲时间与复制缓存一起使用,除非您不关心跨节点的不一致数据。

“节点间数据不一致”是什么意思?如果访问不同的节点,您会看到不同的数据吗?但这怎么会发生呢?所以,如果用户使用一个节点-他经常访问一些条目-由于TTI,它们会留在该节点的缓存中。同时,相同的条目可能在第二节点的缓存上过期。但当在第二个节点上访问时,它们不只是从数据库中重新获取吗?在这方面与TTL的主要区别是什么?

共有1个答案

常心水
2023-03-14

每个 SessionFactory 都驻留在一个节点上,该节点具有自己的 2nd 级缓存。

空闲时间取决于当前节点请求模式,并且由于上次访问时间未复制,因此最终可能会在节点上使用旧实体版本,在另一个节点上获得刷新的实体版本。

虽然Hibernate可以在使用HQL或JPQL时检测实体更改,但它不能对查询执行此操作,因此它只会使所有2nd级缓存区域无效。因此,这个用例是真实可信的。

当您在分布式系统上进行缓存时,很难保持严格的一致性,这就是为什么当所有其他选项都已用尽时,最好使用它。

 类似资料:
  • 我试图在Ehcache中使用Jgroups设置一个复制的缓存。我在集群缓存时遇到了问题。我在eclipse中创建了两个项目,每个项目引用不同的ehcache.xml配置文件。 这两个配置文件都是相同的,并且都给出了BEOLW。 我无法在这里找到问题。是我的配置错误吗??请帮助我解决这个问题…

  • 我的应用程序使用Hibernate和EhCache作为二级缓存提供者。该应用程序部署在Wildfly 8.2上。二级缓存按预期配置并工作,但我不知道如何以通用方式在echache.xml配置中为二级缓存提供单独的配置。目前我的设置如下: 实体: pesistence.xml 还有ehcache.xml 虽然我将实体配置为使用ENTITY_ L2_ application.war#app_PU.EN

  • 在我的基于sping的项目(spring Version4.1.5.Final)中,我使用了ehcache-core Version2.6.10、ehcache-jgroupsreplication Versione1.7和jGroups3.1.0.Final 这是我的XML ehcache配置: 谢谢。 安杰洛

  • 在mule中,我将MySQL DB connector包装在一个缓存范围内,并配置了一个定制的缓存策略,即EHCache。 因此,每当对缓存作用域有重复请求时,它都应该返回存储在其缓存中的数据。但不是这样的。因此,我已经完成了这篇关于如何在Mule中使用CXF配置EHCache的文章 根据建议,我将代码分成两部分,并在缓存范围的请求和响应中使用VM和对象到字符串转换器 但是现在,我遇到了一个新问题

  • 我正在尝试使用APEX设置帖子内容。下面的示例使用GET设置变量 我有没有办法将HTTP类型设置为POST?

  • 我传递的名称和值处理函数从子组件。 现在我想将状态设置为与提供的名称匹配的值。但是我不知道如何设置它。 我尝试了这种方式(但它给出了错误-'this.set状态不是一个函数'): 子组件的代码为: 设置它的正确语法是什么?