2014-10-24 2 views
0

모든 새로운 항목에 대한 기본 만료 시간 제한을 설정하는 다음 항목이 있습니다.Google Guava 캐시, 만료 시간 초과 새로 고침

Cache<String, Tracker> cache = CacheBuilder.newBuilder(). 
expireAfterAccess(expire , TimeUnit.MINUTES).build(); 

어떻게 만료 액세스가 채워지면 새로 고칠 수 있습니까?

물론 하나의 해결책은 항목을 제거하고 다시 삽입하는 것일 수 있지만 다른 방법으로 이미 가능한 것보다 비싸고 일 수 있습니다.

답변

3

cache.getIfPresent(key)을 사용하여 새로 고칠 요소에 액세스하면됩니다. Guava wiki page (강조 광산)에 따르면 항목이 읽기 나 쓰기에 의해 마지막으로 액세스 한 후 지정된 기간이 를 통과 한 후

expireAfterAccess(long, TimeUnit)

만 항목이 만료됩니다. 항목이 축출되는 순서는 크기 기반 축출의 순서와 유사합니다.

그래서 정확히 달성하고 싶은 작업을 수행해야합니다.

+0

Sweet! 그래도 cache.get()을 사용합니다. 동일한 동작을하기를 바랍니다 :) – momomo

+1

예,'expireAfterAccess' 문서에 따라 : _ "모든 캐시 읽기 및 쓰기 작업 (Cache.asMap(). get Cache.asMap(). ") 및 Cache.asMap(). put (K, V))의 콜렉션 뷰에 대한 연산이 아닌"get (K, Callable) "도 OK입니다. – Xaerxess