【发布时间】: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