Hazelcast получить ttl ключа в Imap

Я использую set, чтобы поместить значения в IMap, где я установил ttl. Проблема, которую я пытаюсь решить, заключается в том, что когда я читаю ключ с карты, я хочу получить соответствующий ttl. Я новичок в hazelcast, был бы признателен за помощь.

val testMap: IMap[String, String] = hc.getNativeInstance().getMap(testhcMap)
if (!testMap.containsKey(key)) {
  val duration = TimeUnit.HOURS
  val ttlLen: Long = 1
  md5Map.set(key: String, event: acp_event, ttlLen: Long, duration: TimeUnit)
  return true
}

Приведенный выше фрагмент устанавливает значения. Я хочу добавить еще одну проверку, прежде чем вставлять данные в IMap, я хочу проверить, составляет ли ttl меньше часа, и выполнить некоторые действия на основе этого.


person nocturnal    schedule 03.05.2017    source источник


Ответы (2)


Это должно вам помочь:

IMap<String, String> foo;
foo.getEntryView(key).getExpirationTime();
person mrclean    schedule 18.05.2018
comment
Можете ли вы предоставить больше контекста? - person Nico Haase; 18.05.2018

Вы не можете получить доступ к значению TTL. Вам нужно будет сохранить его (deadline => currentTime + timeout = deadline) либо в ключе, либо в значении, прежде чем вы действительно сохраните его в Hazelcast. Самый простой способ - использовать какой-нибудь класс, похожий на конверт, для хранения фактического значения + крайний срок.

person noctarius    schedule 03.05.2017