使用expiredAferWriter
使用expiredAfterWrite + refreshAfterWrite
指定refreshAferWrite的时间小于expiredAfterWrite
必须使用LoadingCache
直接使用get获取缓存
使用expiredAfterWrite + refreshAfterWrite + ListenableFuture
1. 不管上面那种方式,缓存的加载和刷新都需要外部调用(get)才触发
2. 使用姿势二和三要注意缓存的刷新过期时间要设置的比加载过期时间短,否则体现不出优势
3. 如果当前请求缓存时间距离最后一次时间已经超过过期时间,则会调用加载(load)方法而非刷新(reload)方法来加载缓存,此时会回退到姿势一
4. 刷新缓存的同时也会刷新缓存下次过期的时间(在当前时间累加过期时间)
5. 具体逻辑参照**com.google.common.cache.LocalCache$Segment**。这里贴出一些关键逻辑供各位参考:
只有在value!=null的时候(既未达到过期时间时)才会调用refresh方法
注册了一个Listener来实现异步刷新
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有