一、创建cache对象

创建cache对象一般有两种写法,一种返回cache对象,一种返回loadingCache对象

 

 

 loadingCache继承cache,也意味这cache的能力loadingcache都有,分别看一下两者的api:

cahce:https://guava.dev/releases/21.0/api/docs/com/google/common/cache/Cache.html

LoadingCache:https://guava.dev/releases/21.0/api/docs/com/google/common/cache/LoadingCache.html

建议使用loadingCache,两者api简单对比:

1、LoadingCache#get(K key) 和 Cache.get(K key, CacheLoader<? super K, V> loader)  最终调用同一个方法,两者的效果是一致的

但是Cache不能设置refreshAfterWrite,当数据过期时,会阻塞线程,具体可以参考后面   过期策略与刷新策略是如何配置使用的

二、参数配置,包括过期策略、 刷新策略、容量信息

容量配置根据实际场景来指定大小,建议指定初始容量,扩容操作是一个耗费资源的操作,guava根据设置的容量信息,当容量满时采用lru的淘汰策略就key淘汰,下面主要看一下过期策略和刷新策略

1、过期策略

expireAfterWrite:写后多长时间过期

expireAfterAccess:读后多长时间过期

guava cache并不是采用另启线程将key过期的策略,而是在使用过程中再将key过期

2、刷新策略

refreshAfterWrite:写后多久刷新一次    该方法只能loadingCache使用  Cache使用会抛异常

3、过期策略与刷新策略是如何配置使用的

 

 

下面再看一下刷新策略流程:

 

 

 

 

 

 

注意事项:缓存中不能存null, 若为null 

 

原文地址:http://www.cnblogs.com/zhaolei1996/p/16906702.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性