Google提供了“loading cache”,其描述如下:
从键到值的半持久映射。值由缓存自动加载,并存储在缓存中,直到被驱逐或手动无效。
不幸的是,上面的描述并不十分清楚。 “自动加载”是什么意思?
我希望这意味着:“如果缓存中不存在请求的密钥,则会自动将其添加到其中”。
这个语句在某种程度上得到了支持(来自get()函数):
“返回与此缓存关联的值,首先加载该缓存 必要时的价值。“
但同样,缓存的“加载”方面用“加载”一词来解释。要走的路,谷歌:[
答案 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
时加载。
在评论中,您说您希望更多地强调什么是加载。当你将东西放入缓存时,你放。如果您没有将内容放入缓存中,但缓存会计算并自行放置,缓存会为您加载。