2017-04-12 2 views
0

Ehcache2.X에서 Ehcache3.3.1로 전환 중이며 런타임에 캐시의 TTL (time-to-live) 구성을 가져 오는 방법을 찾을 수 없습니다. 이전에 내가 사용 : cache.getCacheConfiguration().getTimeToLiveSeconds()Ehcache3 유효 기간 설정 구성

자, 내가 유사한 무엇인가 할 필요가 다음과 같습니다 cache.getRuntimeConfiguration().getExpiry().getExpiryForCreation().getLength()

하지만, getExpiryForCreation()는 키, 특정 요소에 대한 값 쌍을 필요하고 그것을 위해 시간을 반환 나타납니다 요소.

API 또는 문서에서 뭔가가 누락 되었습니까?

답변

1

나는 여기에 ehcache 메일 링리스트에서와 같은 대답을 게시 할 것이다.

만료 구현은 매우 동적 일 수 있으며 주어진 캐시 된 키와 값을 사용하여 만료 시간을 선택할 수 있습니다.

Expirations.timeToLiveExpiration(Duration.of(20, TimeUnit.SECONDS)) 과 같은 작업을 수행했다는 것을 알고 계시면 동적이 아닙니다. 따라서 생성 후 캐시 항목의 지속 기간을 보려면 cache.getRuntimeConfiguration().getExpiry().getExpiryForCreation(null, null) 을 사용할 수 있습니다.

동적으로 TTL을 변경하려는 경우 가능하지만 자신의 Expiry 구현을 제공해야합니다 (어렵지는 않음). TTL에 대한 세터와 함께.

그러나 새 값은 새로 추가 된 항목에만 적용됩니다. 기존 항목은 TTL이 변경된 것을 볼 수 없습니다. 이는 항목이 추가 될 때 만료 시간 소인을 계산하기 때문입니다. 기간을 항상 다시 적용하는 대신 성능상의 이유로.