什么是“LoadingCache”?

时间:2017-05-16 06:14:33

标签: caching guava

Google提供了“loading cache”,其描述如下:

  

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

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

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

这个语句在某种程度上得到了支持(来自get()函数):

  

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

但同样,缓存的“加载”方面用“加载”一词来解释。要走的路,谷歌:[

1 个答案:

答案 0 :(得分:4)

Guava的wiki文档有一个full definition :(重点是我的)

  

LoadingCache是使用附加Cache构建的CacheLoader。创建CacheLoader通常与实现方法V load(K key) throws Exception一样简单。因此,例如,您可以使用以下代码创建LoadingCache

     

[...]

     

查询LoadingCache的规范方法是使用方法get(K)这将返回已缓存的值,或者使用缓存CacheLoader以原子方式将新值加载到缓存中。因为CacheLoader可能会抛出{ {1}},Exception抛出LoadingCache.get(K)。如果您定义了一个未声明任何已检查异常的ExecutionException,那么您可以使用CacheLoader执行缓存查找;但是必须注意不要在getUnchecked(K)声明已检查异常的缓存上调用getUnchecked

强调的句子解释了所有要解释的内容:从缓存中获取值或在调用CacheLoader时加载。

在评论中,您说您希望更多地强调什么是加载。当将东西放入缓存时,你。如果您没有将内容放入缓存中,但缓存会计算并自行放置,缓存会为您加载