问题标签 [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 回答
572 浏览

spring - Spring 指标不显示 Guava 命中/未命中

在指标端点中,我得到了所有缓存大小,但没有命中/未命中(正如预期的那样https://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-metrics.html#生产就绪数据源缓存

示例:“cache.mytest.size”:19

我还期望命中/未命中计数器...我正在使用番石榴。

0 投票
1 回答
488 浏览

caching - 如果番石榴缓存已满且没有可驱逐元素会发生什么?

我正在使用基于引用的驱逐的谷歌番石榴缓存。我想知道如果缓存已满并且没有任何元素被标记为可驱逐会发生什么?是否抛出内存不足异常?

0 投票
1 回答
320 浏览

android - 如何在 gradle 中仅包含 Guava 库的缓存实用程序并拒绝其他人?

在 Android Studio 中,我使用的是Guava 库的 CacheBuilder :

如何仅包含此实用程序?

0 投票
1 回答
787 浏览

java - 等待延迟为 0 的预定未来的最佳方式是什么?

我试图避免让当前线程休眠,直到 ScheduledFuture 以 0 延迟执行。不幸的是,我找不到一个针对未来的钩子来通知可运行文件何时执行。有问题的未来包装了一个番石榴 cache.put(key,value) 操作。应在缓存使密钥到期之前调用可运行对象...本质上,我希望一个密钥永不过期。

执行程序服务确实会立即运行代码,但启动线程存在滞后时间。这种滞后将是系统特定的,所以我想避免任意睡眠。

我正在使用 ScheduledThreadPoolExecutor 创建 ScheduledFuture,并且可以使用该类型的访问器(例如 isDone())获得我想要的行为。但是,这似乎也很hacky。是否有更简洁的实现可以提供休眠当前线程的行为而不使用 Executor 服务的副作用?

谢谢,罗宾

编辑:显示没有 Thread.sleep() 失败的测试

为了正常工作,应同步执行 put(key,value) 以允许立即执行 get(key) 操作。

0 投票
1 回答
402 浏览

caching - 刷新同一键的值时Google Guava Cache是​​否进行重复数据删除

我使用 Google Guava 实现了一个非阻塞缓存,缓存中只有一个键,并且键的值仅异步刷新(通过覆盖 reload())。

我的问题是,如果第一个 reload() 任务尚未完成并且新的 get() 请求进来,Guava 缓存是否会处理重复数据删除。

0 投票
2 回答
555 浏览

caching - 如何跳过/避免某些特定元素被 Guava Cache 缓存

有没有办法不使用 Guava Cache 缓存某些特定元素?我仍然希望返回元素,但不缓存。

例如:

0 投票
3 回答
1919 浏览

java - 如何配置番石榴缓存以在读取后删除项目?

我想在从缓存中读取项目后删除(无效)项目。

所以项目应该存在于缓存中,直到第一次读取。

我试过添加expireAfterAccess(0, TimeUnit.NANOSECONDS),但没有填充缓存。

有没有办法以这种方式使用番石榴缓存,或者我需要在读取后手动使项目无效?

0 投票
0 回答
1968 浏览

spring-boot - Openshift - 具有多个 pod 的缓存管理

在我们的一个项目中,我们使用openshift v3.X来托管我们的 Spring Boot Rest 服务。在服务中,我们实现了 Guava Cache,并且在某些操作中我们确实清除了缓存。

例如。当用户想要从表中列出员工时,它会返回所有员工列表并缓存它。现在,如果任何员工记录发生任何更新,我们会清除缓存并重新加载它。

但是我们观察到,虽然它会立即提供更新的缓存,但在某些情况下它会提供原始的旧缓存。假设我们刷新了显示记录的 UI。当有多个 pod 时会出现这种行为吗?

注意:当我们为服务使用多个 POD时,我们会观察到此问题。那么,当我们使用多个 Pod 来管理一个服务的缓存时,我们是否需要特别小心呢?

我们使用@CacheEvict来清除缓存。

任何指针将不胜感激。

提前致谢。

0 投票
2 回答
406 浏览

grails - spring-security-rest 和 guava 之间的间接 jar 冲突导致 NoSuchMethod 错误

我使用 grails 3.1.16

构建.gradle:

运行此代码时:

我收到以下错误:

运行依赖报告后,我发现问题是由 Spring Security REST 插件的依赖引起的:( com.google.guava:guava-base:r03) - 具有相同的包名称“com.google.common。 base" 和 Platform.class 没有这样的方法 systemNanoTime()

有什么想法可以解决这个问题吗?

0 投票
1 回答
4241 浏览

java - 如何确定番石榴缓存中是否存在密钥以便我不会覆盖它?

我有一个番石榴缓存,我想弄清楚一个特定的键是否已经存在,这样我就不会覆盖它们?这可能与番石榴缓存有关吗?

看起来没有 put 方法返回布尔值,我可以在其中确定键是否已经存在。有没有其他方法可以确定密钥是否已经存在,这样我就不会覆盖它?