您的位置:首页 > 编程语言 > Go语言

Google guava cache使用样例

2015-05-12 19:43 330 查看
package com.enniu.vdata.portal;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;

import org.springframework.beans.factory.annotation.Autowired;

import com.enniu.vdata.biz.monitor.dama.DamaSearchBizImpl;
import com.enniu.vdata.common.mongodb.dama.DamaSearchCond;
import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
import com.google.common.cache.RemovalListener;
import com.google.common.cache.RemovalNotification;

public class DamaSearchServiceImplimplements DamaSearchService {
    @Autowired
    private DamaSearchBizImpl                            damaSearchBiz;
    public static LoadingCache<Map, List<DamaSearchCond>>cache =
null;
    static {
        cache = CacheBuilder.newBuilder()
        // 设置大小,条目数
            .maximumSize(10000)
            // 设置时效时间,最后一次被访问
            .expireAfterAccess(2, TimeUnit.HOURS)
            // 移除缓存的监听器
            .removalListener(new RemovalListener<Map, List<DamaSearchCond>>() {
                public void onRemoval(RemovalNotification<Map, List<DamaSearchCond>>notification) {
                }
            })
            // 缓存构建的回调
            .build(new CacheLoader<Map, List<DamaSearchCond>>() {// 加载缓存
                    @Override
                    public List<DamaSearchCond> load(Mapkey)
throws Exception {
                        List<DamaSearchCond> list =new ArrayList<DamaSearchCond>(1000);
                        return
list;
                    }
                });
        cache.invalidateAll();
    }

    public List<DamaSearchCond> search(Map<String, Object>content) {

        List<DamaSearchCond> results =
null;
        try {
            if (cache.get(content) !=null &&
cache.get(content).size() > 0) {
                results =
cache.get(content);
            } else {
                cache.cleanUp();
                results =
damaSearchBiz.search(content);
                cache.put(content,results);
            }
        } catch (ExecutionException
e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        return results;
    }
}

这篇文章介绍的不错: http://outofmemory.cn/java/guava/cache/how-to-use-guava-cache
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: