Google Guava Cache LoadingCache 基本使用

编程入门 行业动态 更新时间:2024-10-20 05:36:05

Google <a href=https://www.elefans.com/category/jswz/34/1768374.html style=Guava Cache LoadingCache 基本使用"/>

Google Guava Cache LoadingCache 基本使用

一. 添加依赖

<dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>27.1-jre</version>
</dependency>

二. 创建CacheLoader

LoadingCache<Long, String> cache = CacheBuilder.newBuilder()//缓存池大小,在缓存项接近该大小时, Guava开始回收旧的缓存项.maximumSize(GUAVA_CACHE_SIZE)//设置过期策略.expireAfterWrite(10, TimeUnit.MINUTES)//设置刷新策略.refreshAfterWrite(10, TimeUnit.MINUTES)//移除监听器,缓存项被移除时会触发.removalListener(new RemovalListener <Long, String>() {@Overridepublic void onRemoval(RemovalNotification<Long, String> rn) {//执行逻辑操作}})//开启Guava Cache的统计功能.recordStats().build(cacheLoader);

 CacheLoader<String, String> cacheLoader = new CacheLoader<String, String>() {//expire后或第一次加载时 调用@Overridepublic String load(String key) throws Exception {return "";}//refresh时调用@Nullable@Overridepublic ListenableFuture<String> reload(String key, HostInfo oldValue) throws Exception {return super.reload(key, oldValue);}};

三.配置

1.expireAfterAccess(long, TimeUnit)

缓存项在给定时间内没有被读/写访问,则回收。请注意这种缓存的回收顺序和基于大小回收一样,再次加载key,调用CacheLoader的load方法。

2.expireAfterWrite(long, TimeUnit)

缓存项在给定时间内没有被写访问(创建或覆盖),则回收。如果认为缓存数据总是在固定时候后变得陈旧不可用,这种回收方式是可取的,再次加载key,调用CacheLoader的load方法。

3.refreshAfterAccess(long duration, TimeUnit unit)

缓存项在给定时间内没有被读/写访问,则刷新,再次加载key,调用CacheLoader的reload方法。

4.refreshAfterWrite(long duration, TimeUnit unit)

缓存项在给定时间内没有被写访问(创建或覆盖),则刷新,再次加载key,调用CacheLoader的reload方法。

因为load是同步加载,reload是异步加载。
expire load的优点:失效后下次查询是实时的数据。
缺点:如果大量缓存同时失效,查询耗时会比较长。

refresh reload的优点:reload是异步的,查询会很快返回。
缺点:当数据到达失效时间时,会先返回上次的value,当reload完成后再会返回实时的数据,数据实时性低于load。

综合使用

CacheBuilder.newBuilder().expireAfterWrite(timeOut, TimeUnit.MINUTES).expireAfterWrite(timeOut+ expireTime, TimeUnit.MINUTES);

timeOut内访问数据会使用reload加载数据,在超过timeOut+ expireTime内访问数据会使用load加载数据。

四.Caffeine

=aladdin1e1
Caffeine 是基于Java 8的高性能,接近最佳的缓存库。 Caffeine使用Google Guava启发的API提供内存缓存。
性能上优于Guava Cache,使用方法类似。



作者:摩V羯座
链接:
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

更多推荐

Google Guava Cache LoadingCache 基本使用

本文发布于:2023-11-15 20:35:33,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1605955.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:Guava   Google   LoadingCache   Cache

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!