springcache集成Guava 设置缓存时间

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

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

时间: 2024-10-09 01:57:37

springcache集成Guava 设置缓存时间的相关文章

servlet设置缓存时间以及文件的下载

缓存时间的设置: 1 public void doGet(HttpServletRequest request, HttpServletResponse response) 2 throws ServletException, IOException { 3 4 response.setContentType("text/html;charset=UTF-8"); 5 PrintWriter out = response.getWriter(); 6 response.setDateH

Nginx优化---隐藏版本号与网页缓存时间

配置Nginx隐藏版本号 在生产环境中,需要隐藏Nginx的版本号,以避免安全漏洞的泄漏 查看方法●使用fiddler I具在Windows客户端查看Nginx版本号在CentOS系统中使用"curl -I 网址"命令查看 Nginx隐藏版本号的方法●修改配置文件法●修改源码法 修改配置文件法 1.Nginx的配置文件中的server_ tokens 选项的值设置为off [[email protected] conf]# vim nginx.conf ..... server_ to

Nginx服务优化(三)配置网页缓存时间

配置Nginx网页缓存时间 当Nginx将网页数据返回给客户端后,可设置缓存的时间,以方便在日后进行相同内容的请求时直接返回,避免重复请求,加快了访问速度.一般针对静态网页设置,对动态网页不设置缓存时间.可在Windows客户端中使用fiddler查看网页缓存时间. 设置方法 可修改配置文件,在http段.或者server段. 或者location段加入对特定内容的过期参数 1.将图片复制到站点目录 [[email protected] nginx-1.12.2]# cd /mnt/tools/

redis基本操作,基于StringRedisTemplate,存储,取值,设置超时时间,获取超时时间,插入list操作

@Autowired private StringRedisTemplate stringRedisTemplate; @GetMapping("/test") void test() { stringRedisTemplate.opsForValue().set("liuqi", "13221050705", 15, TimeUnit.MINUTES); String str1 = stringRedisTemplate.opsForValue

redis 一二事 - 设置过期时间,以文件夹形式展示key显示缓存数据

在使用redis时,有时回存在大量数据的时候,而且分类相同,ID相同 可以使用hset来设置,这样有一个大类和一个小分类和一个value组成 但是hset不能设置过期时间 过期时间只能在set上设置 1 // 向redis中添加缓存 2 jedisClient.set(REDIS_ITEM_KEY + ":" + itemId + ":" + ITEM_KEY, JsonUtils.objectToJson(item)); 3 // 设置key的过期时间 4 jed

Ehcache缓存时间设置

timeToLiveSeconds和timeToIdleSecondstimeToLiveSeconds=x:缓存自创建日期起至失效时的间隔时间x:timeToIdleSeconds=y:缓存创建以后,最后一次访问缓存的日期至失效之时的时间间隔y: 如果仅有timeToLiveSeconds那么自创建时间开始 间隔x后缓存失效:如果没有timeToLiveSeconds那么自最后一次访问缓存 间隔y后 缓存失效:如果既有timeToLiveSeconds也有timeToIdleSeconds那么

java操作Redis缓存设置过期时间

关于Redis的概念和应用本文就不再详解了,说一下怎么在java应用中设置过期时间. 在应用中我们会需要使用redis设置过期时间,比如单点登录中我们需要随机生成一个token作为key,将用户的信息转为json串作为value保存在redis中,通常做法是: //生成token String token = UUID.randomUUID().toString(); //把用户信息写入redis jedisClient.set(REDIS_USER_SESSION_KEY + ":"

前端性能优化-设置缓存

方案: 浏览器304缓存    localstorage本地存储 业务导向选择方案,这里我选择的是localstorage 干什么? 通过localstorage存储js.css资源: 资源版本控制 只要你愿意,localstorage也可以控制缓存时间!通过写一小段js代码来实现: 在活动期间可以提前将活动相关资源缓存至localstorage,减轻活动当日的CDN消耗,同时在提升用户访问速度的同时,降低服务器端压力. if (+new Date() > +new Date(2014, 11,

Azure Blob存储更改缓存时间

Azure的Blob存储可以作为Http的服务来使用.很多客户已经把Blob作为图片存储的服务,这样稍作代码的修改,解决了图片服务器带宽.性能等多种问题. 但同时问题也出现了:在传统Http的服务中很多meta属性是可以设置的,但在blob中如何设置. 比如,在Apache中,可以设置静态内容的缓存时间: 如果想把max-age的时间更改的更长,在Apache中,可以修改配置文件/etc/httpd/conf/httpd.conf #LoadModule headers_module modul