マップには、60秒というttlを持つエントリ(k1、v1)があります。Hazelcast C++クライアント、マップ、TTL
map.set(k1、v2)を実行すると、ttlは影響を受けません。つまり、エントリは60秒後に削除されます。 しかし、map.put(k1、v2)を実行すると、ttlが存在すると判断されます。つまり、エントリは60秒後に削除されません。
この理解は正しいですか?私はそれをこのように推測しますが、文書で明確に言及されていません。
マップには、60秒というttlを持つエントリ(k1、v1)があります。Hazelcast C++クライアント、マップ、TTL
map.set(k1、v2)を実行すると、ttlは影響を受けません。つまり、エントリは60秒後に削除されます。 しかし、map.put(k1、v2)を実行すると、ttlが存在すると判断されます。つまり、エントリは60秒後に削除されません。
この理解は正しいですか?私はそれをこのように推測しますが、文書で明確に言及されていません。
あなたは正しいですか?設定された時間を使用すると、map.putにバグがありました。私はちょうど追加のテストでここに修正のためのPRを提出しました:https://github.com/hazelcast/hazelcast-cpp-client/pull/164
私は間違ってttlのために-1の代わりに0を送りました。 -1は、設定されたttlを使用することを意味します。これはset APIの場合は既に正しいですが、問題はput APIの場合のみでした。
ご報告いただきありがとうございます。
いいえ、putオペレーションとsetオペレーションの両方が、setオペレーションがoldValueを返さないことを除けば、実装が同じであることを除いて同じです。
& SetOperation
クラスをご覧になれます。両方ともBasePutOperation
です。
put/set操作ごとにttlを設定しない限り、evictionはエントリの最新のttl値に基づいている必要があります。