Hazelcast c++ 客户端、地图和 TTL

Hazelcast c++ client, map and TTL

我在地图中有一个条目 (k1, v1),ttl 为 60 秒。

如果我执行 map.set(k1, v2),ttl 不会受到影响,即该条目将在 60 秒后删除。 但是,如果我这样做 map.put(k1, v2),ttl 将抓住存在,即 60 秒后不会删除条目。

这个理解对吗?我猜是这样的,但在文档中找不到明确提到它。

不,put 和 set 操作都具有相同的底层实现,只是 set 操作不 return oldValue。
你可以看看 PutOperation & SetOperation 类,两者都在扩展 BasePutOperation.
除非您为每个 put/set 操作设置 ttl,否则驱逐应基于条目的最新 ttl 值。

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

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

感谢您报告此事。