首页 > 其他分享 >LoadingCache

LoadingCache

时间:2023-06-29 14:34:43浏览次数:41  
标签:load 过期 cache reload refreshAfterWrite 操作 LoadingCache

LoadingCache参数含义:
1、maximumSize:设定缓存项的数目的最大值,当数目空间不足时,会使用LRU策略进行回收
2、expireAfterxxx:过期逐出,例如expireAfterWrite设置为10分钟,则写入十分钟后过期
4、refreshAfterWrite:例如设置为10分钟,则10分钟内没有写操作,则刷新。在到达过期时间后,对cache进行get操作依然可以返回当前已经过期的值,同时触发load操作
5、cache加载方式:
1)load/loadAll:当获取的缓存值不存在时调用,在load操作完成前,调用者会被阻塞。如果有多个线程同时获取同一个key的操作,只会进行一次load;如果load操作失败抛出异常,调用者也会抛异常
2)reload:cache中有数据,但是设置了refreshAfterWrite行为,则会触发reload操作;如果没有设置,则reload不会被使用。 reload操作返回的是一个Future而非结果值。reload操作如果还没有完成,或者reload失败,则依然会返回先前的旧值。reload的默认行为依然是阻塞的,它直接调用了load方法。框架中有一个AsyncReloadCacheLoader是一个使用单独的线程池中执行reload操作的实现,不阻塞用户请求。
6、建议expireAfterXXX和refreshAfterWrite搭配使用,并设置refreshAfterWrite参数的时间小于expireAfterXXX参数的时间。比如refreshAfterWrite=5s,expireAfterXXX = 10s。这样在触发refresh操作的时候cache中数据还没有过期,只需一个线程执行reload

 

标签:load,过期,cache,reload,refreshAfterWrite,操作,LoadingCache
From: https://www.cnblogs.com/MarkLeeBYR/p/17514144.html

相关文章

  • Guava LoadingCache本地缓存的正确使用姿势——异步加载
    1.【背景】AB实验SDK耗时过高同事在使用我写的实验平台sdk之后,吐槽耗时太高,获取实验数据分流耗时达到700ms,严重影响了主业务流程的执行2.【分析】缓存为何不管用我记......
  • GuavaCache中LoadingCache的使用
    背景LoadingCache是GuavaCache构建缓存实体的方法,是一个支持多线程并发读写、高性能、通用的in-heap(堆)本地缓存。支持key不存在时按照给定的CacheLoader的loader方法......