LoadingCache緩存使用(LoadingCache)


  • 首先需要引入先關pom依賴(項目源碼參考:https://github.com/licunzhi/dream_on_sakura_rain/tree/master/loadingcache_demo

    選擇合適的版本
    <!-- https://mvnrepository.com/artifact/com.google.guava/guava -->
    <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>24.1-jre</version>
    </dependency>

     

  • 在項目啟動的時候注冊組件Bean(使用注解@Configuration和@Bean)
    注冊可以在注解Bean上面添加想要注入的名稱,項目使用時可以直接使用注解注入對象
    @Configuration
    public class MyCacheConfiguration {
    
        private static final int EXPIRE_SECONDS = 86400;
    
        /**
         * 定義token緩存, 默認最大數量為3000
         */
        @Bean
        public LoadingCache<String, Object> myCacheStorage() {
            return CacheBuilder.newBuilder().maximumSize(3000).expireAfterWrite(EXPIRE_SECONDS, TimeUnit.SECONDS)
                            .build(new CacheLoader<String, Object>() {
                                @Override
                                public Object load(String name) throws Exception {
             //在這里可以初始化加載數據的緩存信息,讀取數據庫中信息或者是加載文件中的某些數據信息
    return null; } }); } }

    其中Object可以定義自己將要放入緩存中的對象類型(自定義)

  • 使用的時候和往常注冊類一樣實現自動注入即可
  •  

  • CacheBuilder:LoadingCache實現類,存儲鍵值形式(本質Map)
    最常用的方法的介紹----------源碼中對於各個方法的解釋:
    ① 定義對象個數的限制,如果沒有定義過期規則則超出限制的時候,會將最遠時間最少使用的自動過期保證總數在設置的范圍內

    public CacheBuilder<K, V> maximumSize(long size)

    ②定義過期時間顯示(duration:設置持續時間;unit:持續時間單位【備注:右下插圖為可用單位】):緩存中數值在指定時間沒有值更新會過期

    public CacheBuilder<K, V> expireAfterWrite(long duration, TimeUnit unit) 

     ③同樣是定義過期時間,但是這個和上面的有點區別,只要緩存中的數據被訪問就會重置數據的緩存時間

    public CacheBuilder<K, V> expireAfterAccess(long duration, TimeUnit unit)

     

 

使用時   自動注入就可以調用對象的方法put()把緩存信息放置緩存之中

 

同樣的使用get可以獲取放入的特定的緩存信息

 

 

個人小小總結,若有不正確之處 還望指出

 

 

歡迎加入Java、C、C++交流群,群聊號碼:589780530


免責聲明!

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



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