Guava 요약 4-Cache

1973 단어 cache
공식 문서https://code.google.com/p/guava-libraries/wiki/CachesExplained

LoadingCache


이런 용법은 나 개인이 비교적 많이 쓴다.더 이상 말하지 말고 코드를 직접 보세요.
LoadingCache<Key, Graph> graphs = CacheBuilder.newBuilder()
       .maximumSize(1000) //  1000 
       .expireAfterWrite(10, TimeUnit.MINUTES)//      10min.
       .removalListener(MY_LISTENER)//listenner  
       .build(
           new CacheLoader<Key, Graph>() {
            //  load   .
             public Graph load(Key key) throws AnyException {
               return createExpensiveGraph(key);
             }
           });

위의 코드는 이해하기 쉬워요..사용할 때 아주 간단해요.오직
 
graphs.getUnchecked(key)

그래도 간단해.
그런데 여기 요구 사항이 하나 있습니다.load의 반환값은null로 허용되지 않습니다.그러나 우리의 많은 업무 장면에서null의 반환값을 자주 만날 수 있다.해결 방법은 옵션al을 통해서실제 코드를 구체적으로 보다
/**
     *   ID       cache
     */
    private LoadingCache<Long,Optional<LotteryAwardMO>> idLotteryAwardCache;
private void init() {
        idLotteryAwardCache = CacheBuilder.newBuilder().maximumSize(100).expireAfterWrite(5, TimeUnit.SECONDS).build(new CacheLoader<Long, Optional<LotteryAwardMO>>() {
            @Override
            public Optional<LotteryAwardMO> load(Long key) throws Exception {
                LotteryAwardMsgBO lotteryAwardMsgBO = lotteryAwardMsgManager.get(key);
                return Optional.fromNullable(toLotteryAwardMO(lotteryAwardMsgBO));
            }
        });
    }

사용법도 간단해요.
idLotteryAwardCache.getUnchecked(awardId).orNull()

 

CallBack


콜백의 용법은 내가 실제에서 사용한 다음에 쓰자

좋은 웹페이지 즐겨찾기