【问题标题】:Infinispan data evictionInfinispan 数据驱逐
【发布时间】:2014-08-02 20:42:21
【问题描述】:

我使用 infinispan 缓存版本 5.1.6.FINA。我已经配置了命名缓存:

<namedCache name="cacheName">
    <locking lockAcquisitionTimeout="5000" />
    <eviction maxEntries="10" strategy="NONE" />
    <expiration lifespan="-1" maxIdle="-1" />
</namedCache>

我只用它在内存中存储一​​些数据。我在创建缓存期间使用此配置,其中键为Long,值为String,并且只保留 4 个元素,始终只有 4 个。为此,我硬编码了 4 个键:1L、2L、3L、4L,有时只是更改值这些元素。

如果缓存包含键 1L 和 2L 以及一些值的 2 个元素,我尝试用他的值添加另外两个元素,它们会相互重放。因此,缓存仅保存 3 个元素,键为 1L、2L、3L 或 1L、2L、4L。我试图改变驱逐策略,但没有帮助。另外我可以说它是本地环境,非集群。

有人可以解释一下这种行为吗?

【问题讨论】:

  • 如果我正确理解了您的问题,这可能会回答您的问题——当您使用相同的键时,值会被替换。要存储更多值,您需要正确区分键。如果你已经缓存了 1L 和 2L,然后你把例如 2L 和 3L,你最终会得到以前的 1L,替换 2L 和新的 3L 值。
  • 您好 tsykora,感谢您的评论。不幸的是,你有点不正确。我的问题是,例如,我在缓存中有 2 个带有键 1L 和 2L 的元素,并添加了接下来的两个带有键 3L 和 4L 的元素,因此我的缓存中只有 3 个元素。出于某种原因不想住在那里的新元素之一。
  • 我明白了,现在我完全理解你的问题了……说实话,这很奇怪。我还希望您能够将超过 3 个条目存储到缓存中。您是否尝试将 maxEntries 数增加到更高的值?
  • 我删除了驱逐标签,它有所帮助。我这样做是因为我控制了这个缓存中元素的数量。但同意你的看法,这种行为很奇怪。

标签: caching infinispan


【解决方案1】:

如果你有maxEntries=10,我希望你的缓存中有±8个条目,而不仅仅是3个。但通常,答案在这里:

【讨论】:

  • 嗨,弗拉维乌斯。感谢您的回答。也许在 6.0.x 版本中,它的工作方式与我没有尝试过的本文档中的一样,但我的 5.1.6 版本缓存行为完全不同。
猜你喜欢
  • 2013-12-14
  • 2015-11-07
  • 2019-03-17
  • 2014-11-23
  • 2015-05-13
  • 2012-07-16
  • 1970-01-01
  • 2021-07-23
  • 1970-01-01
相关资源
最近更新 更多