2016-06-27 51 views
0

我在地圖上有一個入口(k1,v1),ttl說60秒。Hazelcast C++客戶端,地圖和TTL

如果我做了map.set(k1,v2),ttl不會受到影響,即該條目將在60秒後被刪除。 但是,如果我做了map.put(k1,v2),ttl將會佔用存在的位置,即在60秒後不會移除入口。

這種理解是否正確?我以這種方式猜測,但無法在文檔中明確提到它。

回答

1

你是對的。使用配置的ttl時間時,map.put有一個錯誤。我剛剛提交了PR補丁,並附加了測試:https://github.com/hazelcast/hazelcast-cpp-client/pull/164

我們錯誤地發送了0而不是-1給ttl。 -1表示使用配置的ttl。這對設置API已經是正確的了,問題只存在於API中。

感謝您報告此問題。

1

不,除了set操作沒有返回oldValue之外,put和set操作都具有相同的下執行。
你可以看看PutOperation & SetOperation類,兩者都延伸BasePutOperation
除非您爲每個放置/設置操作設置ttl,否則驅逐應基於最新的ttl條目值。