zoukankan      html  css  js  c++  java
  • 关于Guava Cache 需要注意的几点

    一、元素过期策略

    expireAfterWrite(long duration, TimeUnit unit):在元素【写入】或者【值更新】后的一段时间之后,自动移除元素。

    • 当duration=0时,意味着缓存写入的元素会立刻过期;

    • 过期周期是针对【整个cache所有的元素】,无法针对每一个元素设置过期时间。

    • 过期周期不可为负数,否则会抛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)传入。

  • 相关阅读:
    jquery mobile (一)
    jquery mobile 前言
    MD5Helper辅助类
    设计权限管理系统(十四)
    设计权限管理系统(十三)
    display:table-cell的min-height
    CORS跨域cookie传递
    性能优化-合成层
    textarea自适应高度
    仿今日头条按钮loading效果
  • 原文地址:https://www.cnblogs.com/niejunlei/p/12584773.html
Copyright © 2011-2022 走看看