[java] Ehcache에서 TTL과 유휴 시간을 구별하는 방법

ehache에 대한 문서는 다음과 같이 말합니다.

timeToIdleSeconds: Sets the time to idle for an element before it expires.
i.e. The maximum amount of time between accesses before an element expires

timeToLiveSeconds: Sets the time to live for an element before it expires.
i.e. The maximum time between creation time and when an element expires.

이해 했어요 timeToIdleSeconds를 합니다.

그러나 캐시 항목을 만들고 처음 액세스 한 후에는 timeToLiveSeconds 가 더 이상 적용되지 않는다는 의미입니까?



답변

timeToIdleSeconds보다 짧은 기간에 요청되는 한 캐시 된 개체를 보관할 수 있습니다 timeToIdleSeconds.timeToLiveSeconds캐시 된 객체는 요청 된 횟수 또는시기에 관계없이 몇 초 후에 무효화됩니다.

라고합시다 timeToIdleSeconds = 3. 그런 다음 4 초 동안 요청하지 않으면 개체가 무효화됩니다.

이면 timeToLiveSeconds = 90짧은 수명의 90 초 동안 몇 밀리 초 동안 요청 된 경우에도 90 초 후에 객체가 캐시에서 제거됩니다.


답변

둘 다 설정하면 expirationTime이됩니다 Math.min(ttlExpiry, ttiExpiry).

ttlExpiry = creationTime + timeToLive
ttiExpiry = mostRecentTime + timeToIdle

여기에 전체 소스 코드가 있습니다 .


답변

로부터 기존 1.1 문서 (현재 문서 AFAIK 이상 찾아보기로 쉽고 더 많은 정보를 구글 캐시에서 사용할 수) :

timeToIdleSeconds

이것은 선택적 속성입니다.

올바른 값은 0과 Integer.MAX_VALUE 사이의 정수입니다.

요소가 마지막으로 사용 된 이후 유지되어야하는 시간 (초)입니다. 사용됨은 삽입 또는 액세스됨을 의미합니다.

0은 요소가 유휴 시간을 확인하지 않는 특별한 의미를 가지고 있습니다. 즉, 영원히 유휴 상태가됩니다.

기본값은 0입니다.

timeToLiveSeconds

이것은 선택적 속성입니다.

올바른 값은 0과 Integer.MAX_VALUE 사이의 정수입니다.

요소가 생성 된 이후 유지되어야하는 시간 (초)입니다. 생성됨은 Cache.put 메서드를 사용하여 캐시에 삽입됨을 의미합니다.

0은 특별한 의미를 가지고 있습니다. 즉, 수명을 위해 요소를 확인하지 않는 것입니다. 즉, 영원히 살 것입니다.

기본값은 0입니다.


답변