java缓存之 本地缓存:LoadingCache

贴一个 优势:Guava Cache是一个全内存的本地缓存实现,它提供了线程安全的实现机制。整体上来说Guava cache 是本地缓存的不二之选,简单易用,性能好。

 我的觉得 简单好用,没有redis 那么复杂有那么多配置。

下面实现它的用法:

    private static LoadingCache<String,String> loadingCache = CacheBuilder.newBuilder()
            //初始化缓存容量
            .initialCapacity(1000)
            //缓存容量最大值  //超过最大值:LRU进行清除.
            .maximumSize(10000)
            //缓存有效期
            .expireAfterAccess(12, TimeUnit.HOURS).build(
                    new CacheLoader<String, String>() {
                //默认的数据加载实现,当调用get取值: null  调用 load

                @Override
                public String load(String s) throws Exception {
                    return "null";
                }
            });

LRU 算法的简介:

LRU算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。

具体实现:

1. 新数据插入到链表头部;

2. 每当缓存命中(即缓存数据被访问),则将数据移到链表头部;

3. 当链表满的时候,将链表尾部的数据丢弃。

下面是本地缓存的使用了:

    public static void setKey(String key,String value){
        loadingCache.put(key,value);   //put 放入值。
    }
    public static String getKey(String key){
        String value = null;
        try {
            value = loadingCache.get(key);
            if ("null".equals(value)){
                return null;
            }
            return value;
        }catch (Exception e){
            logger.error("localCache get error ",e);
        }
        return null;
    }

一个设置值,一个获取设置的值。

发布了37 篇原创文章 · 获赞 4 · 访问量 6837

猜你喜欢

转载自blog.csdn.net/m0_37918421/article/details/88409740
今日推荐