什么是“ LoadingCache”?

Fuz*_*Ami 5 caching guava

Google提供了“ 加载缓存 ”,其描述如下:

从键到值的半永久映射。值由缓存自动加载,并存储在缓存中,直到被逐出或手动无效。

不幸的是,上面的描述并不十分清楚。“自动加载”是什么意思?

我希望它的意思是:“如果请求的密钥在缓存中不存在,则将其自动添加到其中”。

该语句(通过get()函数)对此提供了某种支持:

“返回与此缓存中关联的值,必要时首先加载该值。”

但是同样,用单词“ loading”来解释高速缓存的“ loading”方面。方式,Google:[

Oli*_*ire 7

Guava的Wiki文档具有完整定义:(强调是我的)

A LoadingCacheCache带有附件的建筑物CacheLoader。创建a CacheLoader通常与实现该方法一样容易V load(K key) throws Exception。因此,例如,您可以LoadingCache使用以下代码创建一个:

[...]

查询a的规范方法LoadingCache是使用方法get(K)这将返回一个已经缓存的值,或者使用缓存的CacheLoader原子性地将新值加载到缓存中。因为CacheLoader可能会抛出ExceptionLoadingCache.get(K)抛出ExecutionException。如果定义的a CacheLoader不声明任何检查的异常,则可以使用getUnchecked(K); 执行缓存查找。但是,必须注意不要调用s声明已检查异常的getUnchecked缓存CacheLoader

强调的句子解释了所有要解释的内容:一个值从高速缓存中获取,或者在get(K)调用时加载。


在您说的评论中,您希望更多地强调正在加载的内容。当将内容放入缓存时,您放入。当您不将内容放入高速缓存中,但是高速缓存将进行计算并将其自身放入时,高速缓存将为您加载它。

  • 当*您*将内容放入缓存时,您**。当您不将内容放入高速缓存中,但是高速缓存将进行计算并将其自身放入时,高速缓存会为您“加载”它。 (3认同)