Guava Cache快速上手

引入

Guava Cache是一个本地缓存解决方案,属于Google Guava开源库的一部分。本地缓存将数据存入内存中,相比对磁盘进行操作甚至网络会快非常多,一般用于解决某些不会频繁变化但数据查询非常频繁,并且愿意消耗一定内存空间的场景。
Guava Cache快速上手_第1张图片
源码github地址:https://github.com/google/guava/tree/master/guava/src/com/google/common/cache

快速开始

1. 导入Maven


    com.google.guava
    guava
    28.1-jre

2. 创建缓存实例

缓存的创建,有两个常用的接口,Cache和LoadingCache。

  • Cache是一个接口,提供缓存创建的基本方法,采用链式编程的方式创建实例,直到调用build方法之外都是返回Builder对象。举个例子:
Cache cache = CacheBuilder.newBuilder()
                .initialCapacity(20)    // 设置缓存的初始容量
                .maximumSize(100)   // 设置缓存的最大容量
                .expireAfterWrite(1, TimeUnit.MINUTES)   // 设置缓存在写入一分钟后失效
                .concurrencyLevel(10)   // 设置并发级别为10
                .recordStats()   // 开启缓存统计
                .build();
  • LoadingCache是Cache的子接口,与Cache相比无较大差别,但可以重写load方法处理读缓存时,缓存不存在的情况。举个例子:
LoadingCache loadingCache = CacheBuilder.newBuilder()
            .maximumSize(10)
            .expireAfterAccess(1, TimeUnit.DAYS)
            .recordStats()
            .build(new CacheLoader() {
                @Override
                public String load(Integer integer) throws Exception {
                    return Long.parseLong(99999L);
                }
            });

3. 读写缓存

  • Cache接口主要提供以下方法:
    1)getIfPresent:如果存在key则返回相应的value,如果没有缓存对象则返回null;
    2)get:两个入参,第二个入参是一个Callable对象,在缓存对象不存在的情况下执行call方法;
    3)put:写缓存
    4)stats:打印缓存统计结果,只有在创建缓存的时候设置了开启缓存统计才会有结果,否则所有数据可以打印,但结果均为0。
    默认采用的实现类是LocalCache类,感兴趣的朋友可以自己追下源码~
    Guava Cache快速上手_第2张图片
  • LoadingCache接口主要提供以下几个方法:
    1)读缓存,如果缓存对象为空会执行创建缓存时候的load方法;
    2)显示刷新缓存,Guava Cache提供了缓存过期策略和缓存刷新策略,refresh方法是一种显示刷新的方式。
    默认采用的实现类是LocalLoadingCache类,感兴趣的朋友可以自己追下源码~
    Guava Cache快速上手_第3张图片
    这样就可以快速的上手,使用这个缓存了,下一篇会细说缓存过期策略和刷新策略~

你可能感兴趣的:(缓存,#,Guava,Cache)