springboot 中 Guava Cache使用心得

1、引入包

        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>27.1-jre</version>
        </dependency>

2、开启缓存

application 中增加注解@EnableCaching

3、添加缓存管理器

    LoadingCache<String,ReturnObject> cacheBuild = CacheBuilder.newBuilder().maximumSize(100).refreshAfterWrite(Duration.ofSeconds(20)).expireAfterWrite(Duration.ofMinutes(30)).build(CacheLoader.asyncReloading(new CacheLoader<String,ReturnObject >() {
        @Override
        public ReturnObject load(String key) {
            //select接口
            DataVO dataVO = JSONObject.parseObject(key, DataVO.class);
            return  getData(dataVO);
        }
    }, Executors.newSingleThreadExecutor()));

1、ReturnObject 返回对象,换成自己需要的
2、DataVO 查询数据库入参,换成自己需要的
3、maximumSize(100) 设置缓存最大条目数
4、refreshAfterWrite(Duration.ofSeconds(20))刷新时间
5、expireAfterWrite(Duration.ofMinutes(30)) 回收时间
6、public ReturnObject load(String key) 方法 ,查询不到缓存数据时,走load方法去查询数据库;
7、 return getData(dataVO); 查询数据库的方法,换成自己需要的
8、LoadingCache<String,ReturnObject> cacheBuild 这个对象当作成员变量即可

4、查询数据

ReturnObject  returnObject  = cacheBuild .getUnchecked(JSONObject.toJSONString(dataVO )); 

5、缓存数据生成以及查询逻辑

1、通过cacheBuild.getUnchecked(key)方法 去查询缓存,第一次会触发public ReturnObject load(String key)方法,去数据库中查询数据,在缓存有效期内会触发缓存查询,之后根据自己定义的刷新时间和回收时间当缓存数据失效时会再次触发public ReturnObject load(String key)方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值