Клиент Hazelcast c ++, карта и TTL

У меня есть запись (k1, v1) на карте с ttl, скажем, 60 секунд.

Если я сделаю map.set (k1, v2), ttl не будет затронут, т.е. запись будет удалена через 60 секунд. Однако, если я сделаю map.put (k1, v2), ttl перестанет существовать, т.е. запись не будет удалена через 60 секунд.

Это понимание правильное? Я предполагаю, что это так, но не смог найти это четко упомянуто в документации.


person Ashish Vyas    schedule 27.06.2016    source источник


Ответы (2)


Ты прав. При использовании настроенного времени ttl возникла ошибка для map.put. Я только что отправил PR для исправления здесь с дополнительными тестами: https://github.com/hazelcast/hazelcast-cpp-client/pull/164.

Мы по ошибке отправили 0 вместо -1 для ttl. -1 означает использовать настроенный ttl. Это уже было правильно для заданного API, проблема была только в заданном API.

Спасибо, что сообщили об этом.

person ihsan demir    schedule 28.06.2016

Нет, обе операции put и set имеют одинаковую реализацию, за исключением того, что операция set не возвращает oldValue.
Вы можете взглянуть на классы PutOperation и SetOperation, оба расширяют BasePutOperation.
Если вы не устанавливаете ttl для каждой операции put / set, выселение должно быть основано на самом последнем значении ttl записи.

person A.K.Desai    schedule 28.06.2016