我们正在尝试为地图中的每条记录设置自定义到期时间。 每个对象都有一个字段“ long expireDate”,当我们希望删除该对象时,该时间以毫秒为单位。
我们是否还能实施某些策略以根据每个条目的此字段的值来删除记录?
调查了这个问题,但这是每个看跌期权的结果。 Setting TTL/Record Expiry in hazelcast
IMap::put(Key, Value, TTL, TimeUnit)
问题是我们95%的条目都使用putAll放置在此处,因此无法以这种方式提供。
答案 0 :(得分:2)
IMDG 3.11和更高版本中提供的IMap.setTTL()方法允许您在Map中的条目上设置单个TTL值。我认为这里的解决方案是编写一个小的过程,该过程读取条目的expireDate值,计算当前系统时间的偏移量,并将映射条目的TTL设置为该偏移量。
然后,该过程可以作为EntryProcessor(也许紧跟在putAll操作之后,使用相同的键集)执行,也可以作为MapListener来执行,只要添加条目(或更新,有时更新会改变),MapListener就会被执行ExpireData值)。