问题标签 [caffeine-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 投票
0 回答
316 浏览

caffeine - 咖啡因读/写在高负载下需要更长的时间

这就是我在 Spring Boot 中构建咖啡因缓存的方式:

我使用以下同步方法:

当缓存负载很高时,我看到 get/put 时间增加(> 100ms),这让我想这些调用是否应该在 hystrix 之后,但我认为这将是一个过度的为内存搜索启动线程?

此外,我看到 GC 经常发生,我相信这可能会影响读/写时间。关于设置 GC 的任何建议/最佳实践或我可以采取的任何其他一般性建议来改善延迟?谢谢

0 投票
1 回答
616 浏览

caffeine-cache - 按大小驱逐咖啡因似乎不起作用

我正在使用咖啡因缓存。

我想把它放在大小限制之下,但它不能正常工作。

测试1:

另一个测试:尝试获取密钥并将最大值设置为 1

最后一次测试:运行 100 次,最大尺寸 1

有人可以帮我理解这一点以及如何使其正常工作吗?


感谢 Ben Manes,我补充说.executor(Runnable::run)

现在这样做之后,我只得到 3 件物品

  1. 这不会阻止我的线程吗?
  2. 为什么我已经多次使用它的缓存中没有键 5?
0 投票
2 回答
334 浏览

caffeine - 咖啡因缓存 - 如何获取元素创建日期的信息

有没有办法从 CaffeineCache 访问元素的创建时间戳?种cache.get("x").getTimestamp()

0 投票
1 回答
685 浏览

caffeine - 咖啡因缓存,仅在放置成功时才执行过期元素的驱逐

我使用 Caffeine 缓存来缓存来自需要提供给休息端点的数据库的数据。因此缓存仅在数据库上的读取操作时更新。

在名义情况下,我希望缓存带头响应,直到数据不超过某个时间点(=>这种情况通过定义正确的过期选项就可以了)

如果数据库访问失败,即使缓存中的数据过期,我也想回退到缓存。此用例假设过期数据尚未删除。

我正在考虑的解决方案是制作Eviction of Items from the cache only after a successful PUT(成功的 PUT 意味着数据库工作正常)。那有可能吗?

0 投票
0 回答
1005 浏览

spring-boot - 带有 Spring Boot 的咖啡因缓存

我的 DAO 层采用了一种昂贵的方法,如下所示:

另一个作为

我的缓存配置类为:

我正在使用spring boot :: 2.2.6.RELEASE,我的pom包括:

我错过了什么吗?我想维护一个缓存“功能”和“用户故事”,并在调用 DAO 方法后异步更新它。

我收到以下错误:

无法加载配置类:com.packageName.CaffeineCacheConfig

引起:java.lang.NoClassDefFoundError: com/github/benmanes/caffeine/cache/Caffeine

引起:java.lang.ClassNotFoundException:com.github.benmanes.caffeine.cache.Caffeine

我发现这些报告与类似问题有关:CaffeineGit-1CaffeineGit-Related

0 投票
1 回答
2630 浏览

java - 如何在咖啡因缓存中缓存空值

我正在使用咖啡因缓存来存储从外部系统接收到的数据。

结果,

咖啡因不会在缓存中保存空值。如何在咖啡因中存储空值?

0 投票
1 回答
1417 浏览

java - 咖啡因:当 AsyncLoader 无法刷新时使用陈旧的值

我想将我的缓存配置Caffeine为在加载程序无法刷新缓存时返回陈旧的结果。以下 Kotlin 代码演示了这种情况:

我希望此测试能够通过,但我收到以下错误:

我在 Kotlin 中编写了代码,但我认为这个问题与 Kotlin 协程无关。我想将 Caffeine 配置为在刷新时不抛出,而是在缓存中返回之前的结果。

0 投票
1 回答
145 浏览

java - 使用 Spring 表达式语言的 Spring Boot 咖啡因缓存

我正在使用带有咖啡因缓存的 Spring Boot。我的缓存键是 Long 并且我需要键是例如:“1234-RULE”,其中 1234 是 Long 对象,-RULE 只是一个后缀。我尝试了以下方法来实现这一目标:

在调试时,我收到错误:

我的 rule.id 是 Long,我用来连接 id 和后缀的表达式似乎不正确。你能告诉我如何在这里为我的用例连接一个长字符串。

0 投票
0 回答
551 浏览

java - 每个关键过期时间的咖啡因示例

是否有任何关于如何在咖啡因中使用每个密钥到期的示例?

我看到下面的例子——这是否意味着我们要为每个键创建一个 Caffeine 缓存实例?

https://github.com/ben-manes/caffeine/issues/114#issuecomment-300602200

我查看了实现,看看内部如何使用过期接口的实现。

所以说我的图形对象有一个到期时间的方法..这是一个正确的用法吗?

现在,任何时候我执行以下操作——每次密钥到期都会为插入的密钥启用——

0 投票
1 回答
578 浏览

java - 一个应用程序中有多少个 Caffeine Cache 实例太多了?

我有一个用例,我想针对字符串键缓存元素映射,其中映射中的每个元素都可以有自己的到期时间。我打算使用缓存的缓存并利用咖啡因中非常酷的变量到期。

所以类似的东西。

现在,内部缓存应该是动态创建的,父缓存可以有数千个条目。我想知道这是否可以做,或者它是否真的不好使用咖啡因。我担心的是,对于每个内部Cache<String, ObjectWithVariableExpiry>,计时器线程/逻辑可能会成为资源消耗。

非常感谢任何建议。