關於Guava Cache 需要注意的幾點


一、元素過期策略

expireAfterWrite(long duration, TimeUnit unit):在元素【寫入】或者【值更新】后的一段時間之后,自動移除元素。

  • 當duration=0時,意味着緩存寫入的元素會立刻過期;

  • 過期周期不可為負數,否則會拋IllegalArgumentException異常

  • 過期周期會轉化為nano,TimeUnit.NANOSECONDS.convert(duration, TimeUnit.NANOSECONDS)}.

expireAfterAccess(long duration, TimeUnit unit):在元素【寫入】或者【值更新】或者【最近一次訪問】后的一段時間之后,自動移除元素。

  • Cache.asMap() 為緩存的集合視圖,asMap()不會重置元素的最近訪問時間,但是Cache.asMap().get(Object) 和 code Cache.asMap().put(K, V)操作則會重置。

  • 其它同expireAfterWrite

二、緩存狀態

recordStats():累計記錄緩存操作狀態,此設置會對性能有影響。

stats():輸出緩存狀態數據。

三、CacheLoader

LoadingCache.get(key) 操作獲取不到元素時,執行load加載元素,load結果為null時,不會執行更新。

創建方式:

new CacheLoader<Key, Value>() {

    public Value load(Key key)  {

        return selfDefLoadFunction(key);
    }
})

LoadingCache build時傳入或者Cache.get(key, CacheLoader)傳入。

 


免責聲明!

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



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