2016-06-27 4 views
0

지도에 60 초짜리 ttl 항목이 있습니다 (k1, v1).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

실수로 ttl에 -1 대신 0을 보냈습니다. -1은 구성된 ttl을 사용함을 의미합니다. 이것은 이미 설정된 API에 맞았습니다. 문제는 put API에만있었습니다.

신고 해 주셔서 감사합니다.

1

아니요, put 및 set 연산은 모두 거짓 값 구현에서 동일합니다. 단, set 연산이 oldValue를 반환하지 않는다는 점이 다릅니다.
& SetOperation 클래스를 살펴볼 수 있으며, 모두 BasePutOperation입니다.
모든 put/set 작업에 대해 ttl을 설정하지 않는 한 퇴거는 항목의 최신 ttl 값을 기반으로해야합니다.