0

I have an entry (k1, v1) in map with ttl say 60 secs.

If I do map.set(k1, v2), the ttl is not impacted, i.e. the entry will get removed after 60 seconds. However, if I do map.put(k1, v2), the ttl will seize to exist, i.e. entry will not be removed after 60 seconds.

Is this understanding correct? I guess it this way, but could not find it clearly mentioned in documentations.

4

2 回答 2

1

你是对的。使用配置的 ttl 时间时,map.put 存在错误。我刚刚提交了 PR 来修复这里的附加测试:https ://github.com/hazelcast/hazelcast-cpp-client/pull/164

我们错误地为 ttl 发送了 0 而不是 -1。-1 表示使用配置的 ttl。这对于 set API 已经是正确的,问题仅出在 put API 上。

感谢您报告此事。

于 2016-06-28T15:09:16.223 回答
1

不,除了 set 操作不返回 oldValue 之外,put 和 set 操作都有相同的实现。
您可以查看PutOperation&SetOperation类,它们都在扩展BasePutOperation.
除非您为每个 put/set 操作设置 ttl,否则驱逐应基于条目的最新 ttl 值。

于 2016-06-28T13:13:32.317 回答