感谢这个论坛(如何使用Google Guava自动刷新缓存?),我了解了Guava。
我想问一些有关上述主题的信息(如何使用Google Guava自动刷新缓存?),但是由于我的声誉太低,我无法写评论。因此,我必须创建一个新主题。感谢您的理解。
看到这段代码,
LoadingCache<K, V> cache = CacheBuilder.newBuilder()
.refreshAfterWrite(15, TimeUnit.MINUTES)
.maximumSize(100)
.build(new MyCacheLoader());
如果一个条目A至少一次加载了她的值,那么上述代码是否真的足以每15分钟自动重新加载与键A关联的值?
当然,正如Frank所提到的,“我重写MyCacheLoader中的CacheBuilder.reload(K,V)方法,以便它异步执行。” 还是我要添加代码?如果是,在哪里?非常感谢你
PS:JB,javadoc很完美,但是我的英语水平很低。实际上,我的CacheLoader的重写重载可以查看是否必须对某个密钥执行一次真正的重载,如果是,则为该密钥实现一次真正的重载。否则,请勿真正重新加载该键的缓存。而且,即使在第二种情况下(没有真正的重载),我是否也每隔15分钟调用一次覆盖的重载方法?我认为是这样,但我是对的吗?谢谢
一个LoadingCache
建有
LoadingCache<K, V> cache = CacheBuilder.newBuilder()
.refreshAfterWrite(15, TimeUnit.MINUTES)
.maximumSize(100)
.build(new MyCacheLoader());
会不会刷新本身自动条目每隔15分钟,作为缓存不创建线程做任何形式的管理(到期或刷新项)。如果你打电话cache.get(someKey)
,然后20分钟后再次调用它,它就会再刷新条目呼叫的结果,所提供的输入没有被拆迁户到期的要maximumSize
被达到的,当然。
我不太确定您要问什么CacheLoader::reload
和异步性。如果您覆盖它,那么您已经添加了代码,不是吗?希望这不只是对的调用super.reload(k, v)
,因为这不是异步的。如果需要,您可以使用更多详细信息来完成您的问题。
但是,如前所述,该方法不会针对任何当前密钥每15分钟自动调用一次,仅在再次请求输入时才按需调用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句