问题标签 [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 投票
1 回答
266 浏览

java - 使用咖啡因时出现 java.lang.NoClassDefFoundError

我正在制作一个 Minecraft 插件(使用 maven)并且打算使用咖啡因作为缓存,但是当我使用插件 jar 运行我的服务器时,我得到了错误:

我更新到最新版本的咖啡因 (v3.0.3) 和 maven (v3.8.1)。老实说,除了那个错误之外,我没有其他东西可以展示。我只导入了以下咖啡因包:

pom.xml(无回购)

服务器日志:https ://pastebin.com/zMzx37dk

0 投票
2 回答
521 浏览

java - 如何使用咖啡因 getAll()?

标题非常简单,我正在尝试为我的 Minecraft 插件使用咖啡因缓存,但我似乎找不到任何好的示例cache.getAll()。该文档也无济于事。我只看到<,>?. 我真的认为文​​档应该提供示例。所以我要问的是是否有人可以提供一个例子

0 投票
0 回答
61 浏览

java - 如何在 Caffeine Cache Spring Boot 的 application.properties 层为每个缓存设置不同的规范

本质上,我有一些应用程序可以独立地与数据层交互。对于每个正在运行的实例,缓存需求可能会有所不同。我知道您可以在自己的类中轻松地将不同的缓存管理器定义为@Bean,例如:

但是,我们不一定希望每次都重新编译代码;因此,如果我们可以将其配置为 application.properties 级别,那就太好了,因为这是应用程序交互的方式。

我知道使用咖啡因可以定义一些缓存,如下所示:

但据我了解,这些规范将应用于每个缓存。我的问题是如何在 application.properties 级别对每个单独的缓存名称应用不同的规范?

谢谢。

0 投票
0 回答
88 浏览

java - 在单独的 java 类/文件中使用咖啡因缓存实例?

有没有办法在不同的文件中使用相同的缓存实例?当我在 中创建缓存Main.java并这样写时:

并且想从位于单独文件中的另一个类访问它,我该怎么做?

我认为它只是以下代码(Second.java

但问题是它创建了 Main 类的一个新实例,因此创建了一个新的缓存。因为在Main.java执行以下代码时,它会生成null.

顺便说一句,我正在制作一个事件驱动的Minecraft 插件,因此key/value应该已经通过命令创建。

0 投票
1 回答
56 浏览

java - java byte:看不懂这里的用法

字节:为什么,这样做有什么用

{ 字节 p000, p001, p002, p003, p004, p005, p006, p007; ... }

它来自咖啡因源代码:https ://github.com/ben-manes/caffeine/blob/master/caffeine/src/main/java/com/github/benmanes/caffeine/cache/BoundedLocalCache.java

0 投票
1 回答
59 浏览

java - Spring boot,以编程方式/动态方式更新/覆盖 application.properties 值(JAVA)

我正在使用春季启动。应用程序使用 JWT 令牌(另一个微服务)进行身份验证。我必须实现 JWT 令牌的缓存。我正在使用咖啡因缓存。

问题: 现在的问题是这个令牌到期时间总是动态的,我必须将令牌到期时间与缓存到期时间相匹配。IE

缓存过期时间 <= 令牌过期时间

问题:有没有办法使用 Spring Cache 来实现这一点?

我们可以根据 JWT 令牌到期时间动态设置以下属性的值吗?

0 投票
2 回答
182 浏览

java - 具有复杂条件驱逐的缓存

我正在尝试使用caffeinespring-boot-starter-cache实现以下缓存逻辑:

  1. 如果过期时间已经过去并且条件(需要计算和 I/O)被评估为 TRUE,则强制获取数据并更新缓存。
  2. 如果过期时间已经过去并且条件(需要计算和 I/O)被评估为 FALSE,那么不要使缓存数据无效并从缓存中检索值。
  3. 如果到期时间尚未过去则从缓存中检索值。

我按照本指南工作: https ://www.baeldung.com/spring-boot-caffeine-cache

我尝试了各种方法,使用@CachePut,@CacheEvict和我正在缓存的对象@Cacheablegetter方法,但核心问题是我需要用过期时间和另一个逻辑来限制驱逐,但是这些注释无法控制是否驱逐。 ..也许这可以使用Scheduler?

0 投票
1 回答
162 浏览

playframework - 使用 Ehcache 和/或 Caffeine 时,Play Framework 中的(默认)缓存大小限制是多少?

最近我将基于 Play Framework 的项目从Ehcache切换到Caffeine,因为 2.8 版的 Play 文档说“对于进程内缓存,Caffeine 通常是最佳选择。”

现在,我实施了一个小“测试”,以查看在驱逐某些项目之前可以将多少项目添加到缓存中。该测试只是在循环中将越来越多的项目添加到缓存中(没有明确的过期时间),检查每次插入操作后是否所有先前插入的项目仍然可用,直到检测到至少一个先前插入的项目丢失。

使用Ehcache,我发现限制显然是 10,000 项。在将这么多项目添加到缓存后,一些“旧”项目开始从缓存中消失。所以我的结论是,默认情况下, Ehcache具有 10,000 个项目的固定大小限制。另一方面,咖啡因似乎根本没有限制!我让测试运行了很长时间,但即使插入了大约 100 万个项目,之前插入的项目仍然没有被驱逐。那时我停止了测试。

那么,CaffeineEhcache不同,默认情况下没有大小限制吗?它会继续积累项目,直到最终我的应用程序因“内存不足”错误而崩溃,或者咖啡因中是否有一些逻辑会在“内存不足”的情况下驱逐项目?使用Caffeine时是否建议配置显式缓存大小限制?我会这么认为。但是,为什么 Play 默认不这样做呢?


不幸的是,Play Framework 的Cache 文档并没有明确说明Play 使用 Ehcache 和/或 Caffeine 的默认设置。此外,播放配置中的可用缓存选项列表(以及相应的默认值)将非常有帮助......

问候。

0 投票
0 回答
154 浏览

scala - 无法将 MockWS 与咖啡因一起测试

我正在尝试为 MockWS 和 Caffeine 的使用编写一个测试。不知何故,从 MockWS 返回的值无法被驱逐。当 executorContext 不同时我遇到过这个问题,但是即使我尝试通过使用 materializer 的 executorContext 来克服这个问题,它仍然无法驱逐 ws 的返回值。你对此有什么想法吗?

插件:

依赖项:

FakeTicker.scala

(更新:25/08/2021)测试用例:

输出(fakeTicker 不影响 ws 的结果驱逐):

示例代码仓库:https ://github.com/veysiertekin/mockws-caffeine-test

0 投票
0 回答
190 浏览

java - springboot中的caffeine缓存是否有可能由于缓存的数据过多而导致500或超时错误?

嗨,我是springboot的新手。我正在使用咖啡因缓存。最近,当系统调用端点时,我收到很多 500 错误。错误如下:

2021-09-17 00:37:12.127 WARN 1 --- [ Thread-33] c.g.b.caffeine.cache.LocalAsyncCache : Exception thrown during asynchronous load java.util.concurrent.CompletionException: java.net.http.HttpTimeoutException: request timed out

会不会是因为数据过期或者数据太大导致缓存读取失败?