首页 > 编程语言 > 详细

springcache集成Guava 设置缓存时间

时间:2019-05-27 19:12:47      阅读:200      评论:0      收藏:0      [点我收藏+]

上一篇讲到了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.csdn.net/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配置不同的有效时间。

springcache集成Guava 设置缓存时间

原文:https://www.cnblogs.com/a565810497/p/10932149.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!