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