java - 根据条目字段在 hazelcast 中为所有条目设置 TTL/记录过期

标签 java hazelcast ttl hazelcast-imap

我们正在尝试为 map 中的每条记录设置自定义到期时间。 每个对象都有一个“long expireDate”字段,它是我们希望删除该对象的时间(以毫秒为单位)。

我们是否也可以实现一些策略来根据每个条目的该字段的值删除记录?

研究了这个问题,但这是通过 put 进行的每个条目。 Setting TTL/Record Expiry in hazelcast

IMap::put(Key, Value, TTL, TimeUnit)

问题是我们 95% 的条目都是使用 putAll 放置在那里的,因此不能以这种方式提供。

最佳答案

IMDG 3.11 及更高版本中提供的 IMap.setTTL() 方法允许您在映射内的条目上设置单独的 TTL 值。我认为这里的解决方案是编写一个小过程来读取条目的 expireDate 值,计算与当前系统时间的偏移量,并将映射条目的 TTL 设置为该偏移量。

然后,这个过程可以作为 EntryProcessor 执行(可能紧随 putAll 操作,使用同一组键),也可以作为 MapListener 执行,只要添加条目(或更新,如果更新有时会改变),就会触发 MapListener expireData 值)。

关于java - 根据条目字段在 hazelcast 中为所有条目设置 TTL/记录过期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56219852/

相关文章:

java - Maven 构建失败 - 缺少主类

java - Hazelcast 集群映射配置

serialization - 没有为命名空间注册 DataSerializeFactory

Cassandra 将 TTL 添加到现有条目

Python DNS 解析器和原始 TTL

java - StringTokenizer 似乎在我的程序中不起作用 - Java

java - 当没有可用的提交按钮时,将 key 发送到表单字段时出现问题

hazelcast - Hazelcast 客户端实例的唯一名称

mongodb - Spring Data 的 TTL 索引定义

java - Java 接口(interface)中的抽象方法