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


103

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 가 더 이상 적용되지 않는다는 의미입니까?

답변:


156

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

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

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


1
나는 우리가 항상 설정할 추정 그래서 idletime <TTL
자크 르네 Mesrine

위의 설명에서 "timeToIdleSeconds = 3이라고 가정 해 보겠습니다. 4 초 동안 요청하지 않으면 개체가 무효화됩니다."라고 말하면 invalidate-무슨 의미입니까? 힙에서 제거합니까? 객체가 캐시에서 제거되면 timeToLive 매개 변수를 사용하는 것이 무엇인지 혼란 스럽습니다. POC를 수행했을 때 timetoIdleseconds 후에 소스에서 데이터를 가져 오는 것을 볼 수 있습니다. timetoLive가 훨씬 더 높은 값이지만, 우리의 경우 timetoLive가 timeToIdle보다 훨씬 더 높은 값이기 때문에 캐시에서 가져올 것으로 예상했을 것입니다.
Gayathri 2011 년

3
@Gayathri 자주 (2 초마다) 액세스되지만 TTL이 60 초인 데이터 항목이있는 경우. 계속해서 액세스하더라도 (유휴 상태가 아님) 60 초마다 한 번씩 소스에서 가져옵니다.
C. Ross

8
첫 번째 댓글에 대한 후속 조치 (@ JacquesRenéMesrine). TTL과 TTI가 모두 설정된 경우 (즉, 0보다 큼) : 1) TTI> = TTL : TTI는 효과없습니다 . 항목 간주 만료 후에 creationTime + TTL) 2 TTI <TTL : 항목 간주 만료min((max(lastAccessTime, creationTime) + TTI), (creationTime + TTL))
티무르 Milovanov

"선명하게 촬상"-> "관계"
매그너스

41

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

ttlExpiry = creationTime + timeToLive
ttiExpiry = mostRecentTime + timeToIdle

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


1
이제 그 행동이 나에게 의미가 있습니다. 특히 Math.min부분 을 지적 해 주셔서 감사합니다 .
Prakash K

이 코드는 위의 인간의 설명보다 더 명확합니다. :-)
Maga Abdurakhmanov

22

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

timeToIdleSeconds

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

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

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

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

기본값은 0입니다.

timeToLiveSeconds

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

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

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

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

기본값은 0입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.