问题标签 [google-guava-cache]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 通过Java中对象的深度(与浅层相反)大小来限制缓存?
我正在缓存图像以更快地从网络共享和/或互联网下载。目前,这个缓存在内存中。
是否可以通过对象的深度大小(初步BufferedImageSize
)来限制缓存?
缓存初始化如下
DeferredImage
包装器在哪里,BufferedImage
以方便在单独的线程中加载。
是否可以编写一些大小检查,它考虑的不是缓存中的条目数,而是它们的字节大小?
更新
我找到了 maximumWeight() 方法,但不明白这是否是我正在寻找的:文档无处说明,计算权重的总和。
guava - 番石榴:Cache.asMap().remove() 更好吗?
我想从中获取和删除一个项目Cache
我还找到了另一种方法
方法是否asMap
克隆所有项目?这是一个沉重的电话吗?如果考虑性能,哪种方式更好。
java - 缓存并发RemovalListener
嗨,这里是简单的代码。问题是为什么缓存中的某些值与我预期的不同。我认为 cahce 中应该有 1000 个条目,每个条目的计数器为 1000,但处理结束于
问题出在哪里,这是编写这种测试的好方法,否则我错过了一些东西。
java - Guava Cache 面临的问题
我正在使用 Google Guava Cache + Spring 缓存抽象来进行缓存。我正在尝试使用 Guava 的 Loading Cache 接口。
我知道 Spring 提供了对 Guava Cache 的支持,但我想知道是否可以使用 Spring 的可缓存注释以及 Loading Cache?
基本上我想将业务层与缓存分开。
请帮忙。谢谢。
java - 在 CacheLoader::load 调用期间更新 Guava 缓存中不相关的值是否安全?
我想存储 的缓存{organizationId, userId} -> userEmail
,但我可用的 API 返回给定组织的所有电子邮件。只要我得到所有这些值,在调用期间存储它们是否安全CacheLoader::load
?
java - 为什么 Guava LoadingCache 的 getAll 方法返回不同类型的 ImmutableMap?
我有简单的 Guava LoadingCache 用例,我将关键对象列表传递给getAll
并实现loadAll
以在缓存中不可用时获取结果。
问题是当缓存为空时,
- 调用
getAll
记录集合返回 Map 类型RegularImmutableMap
。 - 并且调用单个记录
getAll
的集合返回 Map 类型。SingletonImmutableBiMap
这最终会导致另一个问题。当我尝试收集map.values()
它时,RegularImmutableMap
返回一个类型ImmutableList
并SingletonImmutableBiMap
返回一个类型ImmutableSet
。
从用户的角度来看,为什么getAll
方法返回不同类型的有什么具体原因/优势ImmutableMap
吗?
java - Guava Cache:Put 操作触发移除监听器
我有一个缓存,并且正在将新元素放入其中。每次我将一个项目放入缓存中时,都会触发删除侦听器。如何仅在实际删除或驱逐事物时触发删除侦听器?
我在这里错过了什么吗?为什么不叫a PutListener
?
java - 如何使用 Guava Cache 和 ArrayList 的到期时间?
我刚刚发现了 Guava Caching,我看到的所有示例都是使用 map、key 和 value。
有没有办法将番石榴缓存用于 ArrayList?
我有一个包含元素的 ArrayList,每个元素有 60 秒的生存时间,之后它应该被删除,我很感激任何建议。
是否可以在删除每个元素后触发方法?例如,如果从列表中删除了一个数字,我需要再次重新计算平均值。
apache-spark - 番石榴缓存不从缓存中获取值并为每次调用刷新
我在我的 spark 应用程序中创建了缓存,每 6 小时刷新几个值。
代码如下所示。
此方法为我获取项目和缓存。
此方法用于将缓存的值放入列表中。
但是,我观察到每次调用都会刷新缓存,而不是在指定时间段后刷新。
java - Guava LoadingCache:为什么要一起使用 refreshAfterWrite 和 expireAfterWrite
我阅读了这篇解释 Guava Cache: CachesExplained的文档。我确实了解 refreshAfterWrite 和 expireAfterWrite 在做什么。但是,在解释 refreshAfterWrite 的同时,文档中也提到了这一点:
"因此,例如,您可以在同一个缓存中同时指定 refreshAfterWrite 和 expireAfterWrite ,这样每当条目符合刷新条件时,条目的过期计时器就不会被盲目重置,因此,如果在之后没有查询条目符合刷新条件,允许过期。 ”
这是让我感到困惑的部分。根据我的理解,如果你想让某个key自动刷新,你只需要指定refreshAfterWrite。为什么我们在使用 refreshAfterWrite 时还要使用 expireAfterWrite?