マップに ttl say 60 秒のエントリ (k1, v1) があります。
map.set(k1, v2) を実行しても、ttl は影響を受けません。つまり、エントリは 60 秒後に削除されます。ただし、map.put(k1, v2) を実行すると、ttl が存在するようになります。つまり、エントリは 60 秒後に削除されません。
この理解は正しいでしょうか?このように推測しますが、ドキュメントに明確に記載されているのを見つけることができませんでした。
マップに ttl say 60 秒のエントリ (k1, v1) があります。
map.set(k1, v2) を実行しても、ttl は影響を受けません。つまり、エントリは 60 秒後に削除されます。ただし、map.put(k1, v2) を実行すると、ttl が存在するようになります。つまり、エントリは 60 秒後に削除されません。
この理解は正しいでしょうか?このように推測しますが、ドキュメントに明確に記載されているのを見つけることができませんでした。
いいえ、set 操作が oldValue を返さないことを除いて、put 操作と set 操作の両方の基本的な実装は同じです。&クラス
を見ることができます。どちらも拡張しています。
put/set 操作ごとに ttl を設定しない限り、エビクションはエントリの最新の ttl 値に基づく必要があります。PutOperation
SetOperation
BasePutOperation
あなたは正しいです。設定された ttl 時間を使用する場合、map.put にバグがありました。追加のテストとともに、ここで修正の PR を送信しました: https://github.com/hazelcast/hazelcast-cpp-client/pull/164
ttl に -1 ではなく 0 を誤って送信しました。-1 は、構成された ttl を使用することを意味します。これは set API についてはすでに正しいものでしたが、問題は put API のみにありました。
ご報告いただきありがとうございます。