springcache集成Guava 设置缓存时间

上一篇提到Spring Boot集成Spring Cache无法设定缓存有效时间,本文介绍如何使用Guava设定其有效时间,包括添加Maven依赖、配置cacheManager等步骤,并给出测试代码。还指出Guava设置有效时间有局限性,后续将讲Spring Cache与Redis结合设置不同有效时间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上一篇讲到了springboot集成springcahce :https://www.cnblogs.com/a565810497/p/10931426.html

但是缓存的有效时间无法设定。

这里就讲一下如何使用guava设定springcahce的有效时间

第一步:添加maven依赖:

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

 

第二步,配置cacheManager:

  @Bean
    public CacheManager cacheManager(){
        GuavaCacheManager cacheManager = new GuavaCacheManager();
        cacheManager.setCacheBuilder(CacheBuilder.newBuilder().expireAfterAccess(2,TimeUnit.SECONDS));//这里就是设置有效时长,我设置了2秒
        return cacheManager;
    }

我把这代码写到了启动类里去。

这里

expireAfterAccess就是设置有效时间了,这里有多个用法,有读写后刷新,有固定刷新,详细的可以参考:https://blog.youkuaiyun.com/abc86319253/article/details/53020432

我们看一下测试代码:

@Test
    public void getTime() throws InterruptedException {
        int i = 1;
        while (i <= 20) {
            log.info("" + "第" + i + "次获取时间" + testTimeService.getTestTime());
            i++;
            if (i <= 10) {
                Thread.sleep(1000);
            } else {
                Thread.sleep(3000);
            }
        }
    }

我们进行获取20次时间,前10次,每隔一秒拿一次,这样缓存不会过期,拿到的时间应该都是一样的,

后面10次就隔3秒拿一次,这个时候缓存已经到期了拿到的应该不是缓存内的时间,应该是最新时间

 

结果的确如此。

 本文源码:https://gitee.com/Hiro-D/Java/tree/master/guava-cache

guava虽然可以设置cache的有效时间,但是是默认的有效时间,如果想要不同的cache有不同的时间guava就不太方便了(本人没找到方法),而且这样cache是本地缓存,想了一下,还是springcahce集合redis,这样就可以设置多个cache多个有效时间了,下一篇就会讲到springcahce+redis配置不同的有效时间。

转载于:https://www.cnblogs.com/a565810497/p/10932149.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值