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配置不同的有效時間。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM