问题标签 [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.

0 投票
1 回答
542 浏览

java - 通过Java中对象的深度(与浅层相反)大小来限制缓存?

我正在缓存图像以更快地从网络共享和/或互联网下载。目前,这个缓存在内存中。

是否可以通过对象的深度大小(初步BufferedImageSize)来限制缓存?

缓存初始化如下

DeferredImage包装器在哪里,BufferedImage以方便在单独的线程中加载。

是否可以编写一些大小检查,它考虑的不是缓存中的条目数,而是它们的字节大小?

更新

我找到了 maximumWeight() 方法,但不明白这是否是我正在寻找的:文档无处说明,计算权重的总和。

0 投票
1 回答
332 浏览

guava - 番石榴:Cache.asMap().remove() 更好吗?

我想从中获取和删除一个项目Cache

我还找到了另一种方法

方法是否asMap克隆所有项目?这是一个沉重的电话吗?如果考虑性能,哪种方式更好。

0 投票
1 回答
71 浏览

java - 缓存并发RemovalListener

嗨,这里是简单的代码。问题是为什么缓存中的某些值与我预期的不同。我认为 cahce 中应该有 1000 个条目,每个条目的计数器为 1000,但处理结束于

问题出在哪里,这是编写这种测试的好方法,否则我错过了一些东西。

0 投票
2 回答
1550 浏览

java - Guava Cache 面临的问题

我正在使用 Google Guava Cache + Spring 缓存抽象来进行缓存。我正在尝试使用 Guava 的 Loading Cache 接口。

我知道 Spring 提供了对 Guava Cache 的支持,但我想知道是否可以使用 Spring 的可缓存注释以及 Loading Cache?

基本上我想将业务层与缓存分开。

请帮忙。谢谢。

0 投票
1 回答
90 浏览

java - 在 CacheLoader::load 调用期间更新 Guava 缓存中不相关的值是否安全?

我想存储 的缓存{organizationId, userId} -> userEmail,但我可用的 API 返回给定组织的所有电子邮件。只要我得到所有这些值,在调用期间存储它们是否安全CacheLoader::load

0 投票
1 回答
709 浏览

java - 为什么 Guava LoadingCache 的 getAll 方法返回不同类型的 ImmutableMap?

我有简单的 Guava LoadingCache 用例,我将关键对象列表传递给getAll并实现loadAll以在缓存中不可用时获取结果。

问题是当缓存为空时,

  • 调用getAll记录集合返回 Map 类型RegularImmutableMap
  • 并且调用单个记录getAll的集合返回 Map 类型。SingletonImmutableBiMap

这最终会导致另一个问题。当我尝试收集map.values()它时,RegularImmutableMap返回一个类型ImmutableListSingletonImmutableBiMap返回一个类型ImmutableSet

从用户的角度来看,为什么getAll方法返回不同类型的有什么具体原因/优势ImmutableMap吗?

0 投票
1 回答
507 浏览

java - Guava Cache:Put 操作触发移除监听器

我有一个缓存,并且正在将新元素放入其中。每次我将一个项目放入缓存中时,都会触发删除侦听器。如何仅在实际删除或驱逐事物时触发删除侦听器?

我在这里错过了什么吗?为什么不叫a PutListener

0 投票
1 回答
1224 浏览

java - 如何使用 Guava Cache 和 ArrayList 的到期时间?

我刚刚发现了 Guava Caching,我看到的所有示例都是使用 map、key 和 value。

有没有办法将番石榴缓存用于 ArrayList?

我有一个包含元素的 ArrayList,每个元素有 60 秒的生存时间,之后它应该被删除,我很感激任何建议。

是否可以在删除每个元素后触发方法?例如,如果从列表中删除了一个数字,我需要再次重新计算平均值。

0 投票
1 回答
468 浏览

apache-spark - 番石榴缓存不从缓存中获取值并为每次调用刷新

我在我的 spark 应用程序中创建了缓存,每 6 小时刷新几个值。

代码如下所示。

此方法为我获取项目和缓存。

此方法用于将缓存的值放入列表中。

但是,我观察到每次调用都会刷新缓存,而不是在指定时间段后刷新。

0 投票
1 回答
12016 浏览

java - Guava LoadingCache:为什么要一起使用 refreshAfterWrite 和 expireAfterWrite

我阅读了这篇解释 Guava Cache: CachesExplained的文档。我确实了解 refreshAfterWrite 和 expireAfterWrite 在做什么。但是,在解释 refreshAfterWrite 的同时,文档中也提到了这一点:

"因此,例如,您可以在同一个缓存中同时指定 refreshAfterWrite 和 expireAfterWrite ,这样每当条目符合刷新条件时,条目的过期计时器就不会被盲目重置,因此,如果在之后没有查询条目符合刷新条件,允许过期。

这是让我感到困惑的部分。根据我的理解,如果你想让某个key自动刷新,你只需要指定refreshAfterWrite。为什么我们在使用 refreshAfterWrite 时还要使用 expireAfterWrite?