2013-09-25 2 views
2

한시간에 2 시간 동안 만 저장되는 캐시로 구현되는 내지도, 내가 넣은 링크에서 예제를 읽으려고했지만 현재지도를 어떻게 바꿀지 이해하지 못했습니다. 지도를 채우고 퇴거 명령을 사용해야한다는 것을 이해하지만 현재 코드를 어떻게 변경하는지 이해할 수 없습니다.은 내가 말하는거다하면은 다음과 같다

+0

당신은 무엇을하려고 했습니까? 정확히 당신은 이해하지 못했습니까? – redFIVE

+1

제공된 링크에서 제공된 예제로 시작하는 것이 좋습니다. 필요없는 비트를 제거하고 만료일을 변경하면됩니다. –

답변

6

캐시를 채우는 데 CacheLoader를 사용하고 있다고 가정하기 때문에 혼란스러워 할 지 모르지만 이전에는지도를 사용했다면 캐시를 채울 수 없으므로 혼란을 겪을 수 있습니다.

그래서, 주어진 예는 다음과 같습니다

LoadingCache<Key, Graph> graphs = CacheBuilder.newBuilder() 
    .maximumSize(1000) 
    .expireAfterWrite(10, TimeUnit.MINUTES) 
    .removalListener(MY_LISTENER) 
    .build(
     new CacheLoader<Key, Graph>() { 
     public Graph load(Key key) throws AnyException { 
      return createExpensiveGraph(key); 
     } 
     }); 

직접지도에 삽입하고, 로더를 사용하지 않는, 그래서 적재 부 제거하고 :

Cache<Key, Graph> graphs = CacheBuilder.newBuilder() 
    .maximumSize(1000) 
    .expireAfterWrite(10, TimeUnit.MINUTES) 
    .removalListener(MY_LISTENER) 
    .build(); 
이 에게

필요하지 않은 을 항목이 제거되었을 때 알림을 받으시겠습니까?

Cache<Key, Graph> graphs = CacheBuilder.newBuilder() 
    .maximumSize(1000) 
    .expireAfterWrite(10, TimeUnit.MINUTES) 
    .build(); 

고정 크기 캐시를 원하지 않고 정시에 제한하고 싶습니까?

Cache<Key, Graph> graphs = CacheBuilder.newBuilder() 
    .expireAfterWrite(10, TimeUnit.MINUTES) 
    .build(); 

그리고 당신은 ... 당신은 2 시간 원했고, 버전이 문자열, 문자열, 그래서 말했다 그래서

Cache<String, String> graphs = CacheBuilder.newBuilder() 
    .expireAfterWrite(2, TimeUnit.HOURS) 
    .build(); 
관련 문제