一、创建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
标签:策略,记录,过期,cache,key,刷新,guava From: https://www.cnblogs.com/zhaolei1996/p/16906702.html