关于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)传入。

四、附加订阅

 

posted @ 2020-03-27 22:23  WindWant  阅读(2152)  评论(0编辑  收藏  举报
文章精选列表