Hazelcast - 最旧的条目首先被驱逐

Posted

技术标签:

【中文标题】Hazelcast - 最旧的条目首先被驱逐【英文标题】:Hazelcast - Oldest Entries Evicted First 【发布时间】:2016-08-05 10:08:19 【问题描述】:

我正在使用 hazelcast 存储对小时间窗口(可能是 30 到 50 分钟,但不超过 60 分钟)很重要的数据。条目越旧,它就越不重要,这意味着如果我们可以删除一些条目以避免 OutOfMemory 将是较旧的条目。

我将这些条目的 TTL 配置为 60 分钟,但是当内存不足时,我想可靠地首先删除最旧的条目,即使它们没有过期。

我检查了EvictionPolicy.LRU 的配置,但配置它我可以看到一些最近添加到地图的条目正在被驱逐。我想这是由于 here 解释的用于选择驱逐条目的采样算法。

是否存在涵盖此用例的分布式对象的任何实现?

【问题讨论】:

【参考方案1】:

从 Hazelcast 3.7 开始,您将能够定义 a custom eviction policy 并实现任何算法。 您可以找到示例here。

谢谢

【讨论】:

嘿,太好了,会检查的!是否预计 LRU 在某些情况下实现会驱逐最后添加的条目?我可以通过添加一个条目侦听器来看到这种行为,只是在添加或驱逐条目时打印一些东西,在某些情况下,我可以看到最近添加的条目被驱逐并且保持条目不被访问超过几个小时(使用hz 3.6.4) . 在 3.7 版本中驱逐最后添加的条目应该不再是问题。请看这个:github.com/hazelcast/hazelcast/issues/4334

以上是关于Hazelcast - 最旧的条目首先被驱逐的主要内容,如果未能解决你的问题,请参考以下文章

Db2/sql:使用连接选择和更新最旧的条目

选择与最旧条目匹配的所有条目

TSQL计算最旧和最新行之间的差异

从最新到最旧的python对Mongo列表进行排序[重复]

git stash drop 最旧的存储(比如最旧的 5 个存储)

删除 SQL 中的重复行