2016-06-27 13 views
0

Ich habe einen Eintrag (k1, v1) in Karte mit TTL sagen 60 Sekunden.Hazelcast C++ - Client, Karte und TTL

Wenn ich map.set (k1, v2), ist die TTL nicht betroffen, d. H. Der Eintrag wird nach 60 Sekunden entfernt. Allerdings, wenn ich map.put (k1, v2), wird die TTL ergreifen, um zu existieren, d. H. Eintrag wird nicht nach 60 Sekunden entfernt.

Ist dieses Verständnis korrekt? Ich schätze es so, konnte es aber in Dokumentationen nicht klar finden.

Antwort

1

Sie haben Recht. Es gab einen Fehler für map.put, wenn konfigurierte TTL-Zeit verwendet wurde. Ich habe gerade die PR für die Reparatur hier mit den zusätzlichen Tests eingereicht: https://github.com/hazelcast/hazelcast-cpp-client/pull/164

Wir versehentlich 0 anstelle von -1 für die TTL gesendet. -1 bedeutet, das konfigurierte ttl zu verwenden. Das war für die eingestellte API schon richtig, das Problem lag nur bei der Put-API.

Vielen Dank für Ihre Meldung.

1

Nein, sowohl die Put- als auch die Set-Operation haben dieselbe unterliegende Implementierung, außer dass die set-Operation den oldValue nicht zurückgibt.
Sie können einen Blick auf die PutOperation & SetOperation Klassen werfen, beide erweitern BasePutOperation.
Wenn Sie das ttl nicht für jeden Put/Set-Vorgang festlegen, sollte die Räumung auf dem letzten ttl-Wert des Eintrags basieren.