问题标签 [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.
java - 使用咖啡因时出现 java.lang.NoClassDefFoundError
我正在制作一个 Minecraft 插件(使用 maven)并且打算使用咖啡因作为缓存,但是当我使用插件 jar 运行我的服务器时,我得到了错误:
我更新到最新版本的咖啡因 (v3.0.3) 和 maven (v3.8.1)。老实说,除了那个错误之外,我没有其他东西可以展示。我只导入了以下咖啡因包:
pom.xml(无回购)
java - 如何使用咖啡因 getAll()?
标题非常简单,我正在尝试为我的 Minecraft 插件使用咖啡因缓存,但我似乎找不到任何好的示例cache.getAll()
。该文档也无济于事。我只看到<
,>
和?
. 我真的认为文档应该提供示例。所以我要问的是是否有人可以提供一个例子
java - 如何在 Caffeine Cache Spring Boot 的 application.properties 层为每个缓存设置不同的规范
本质上,我有一些应用程序可以独立地与数据层交互。对于每个正在运行的实例,缓存需求可能会有所不同。我知道您可以在自己的类中轻松地将不同的缓存管理器定义为@Bean,例如:
但是,我们不一定希望每次都重新编译代码;因此,如果我们可以将其配置为 application.properties 级别,那就太好了,因为这是应用程序交互的方式。
我知道使用咖啡因可以定义一些缓存,如下所示:
但据我了解,这些规范将应用于每个缓存。我的问题是如何在 application.properties 级别对每个单独的缓存名称应用不同的规范?
谢谢。
java - 在单独的 java 类/文件中使用咖啡因缓存实例?
有没有办法在不同的文件中使用相同的缓存实例?当我在 中创建缓存Main.java
并这样写时:
并且想从位于单独文件中的另一个类访问它,我该怎么做?
我认为它只是以下代码(Second.java
)
但问题是它创建了 Main 类的一个新实例,因此创建了一个新的缓存。因为在Main.java
执行以下代码时,它会生成null
.
顺便说一句,我正在制作一个事件驱动的Minecraft 插件,因此key
/value
应该已经通过命令创建。
java - java byte:看不懂这里的用法
字节:为什么,这样做有什么用
{ 字节 p000, p001, p002, p003, p004, p005, p006, p007; ... }
java - Spring boot,以编程方式/动态方式更新/覆盖 application.properties 值(JAVA)
我正在使用春季启动。应用程序使用 JWT 令牌(另一个微服务)进行身份验证。我必须实现 JWT 令牌的缓存。我正在使用咖啡因缓存。
问题: 现在的问题是这个令牌到期时间总是动态的,我必须将令牌到期时间与缓存到期时间相匹配。IE
缓存过期时间 <= 令牌过期时间
问题:有没有办法使用 Spring Cache 来实现这一点?
我们可以根据 JWT 令牌到期时间动态设置以下属性的值吗?
java - 具有复杂条件驱逐的缓存
我正在尝试使用caffeine
并spring-boot-starter-cache
实现以下缓存逻辑:
- 如果过期时间已经过去并且条件(需要计算和 I/O)被评估为 TRUE,则强制获取数据并更新缓存。
- 如果过期时间已经过去并且条件(需要计算和 I/O)被评估为 FALSE,那么不要使缓存数据无效并从缓存中检索值。
- 如果到期时间尚未过去,则从缓存中检索值。
我按照本指南工作: https ://www.baeldung.com/spring-boot-caffeine-cache
我尝试了各种方法,使用@CachePut
,@CacheEvict
和我正在缓存的对象@Cacheable
的getter
方法,但核心问题是我需要用过期时间和另一个逻辑来限制驱逐,但是这些注释无法控制是否驱逐。 ..也许这可以使用Scheduler
?
playframework - 使用 Ehcache 和/或 Caffeine 时,Play Framework 中的(默认)缓存大小限制是多少?
最近我将基于 Play Framework 的项目从Ehcache切换到Caffeine,因为 2.8 版的 Play 文档说“对于进程内缓存,Caffeine 通常是最佳选择。”
现在,我实施了一个小“测试”,以查看在驱逐某些项目之前可以将多少项目添加到缓存中。该测试只是在循环中将越来越多的项目添加到缓存中(没有明确的过期时间),检查每次插入操作后是否所有先前插入的项目仍然可用,直到检测到至少一个先前插入的项目丢失。
使用Ehcache,我发现限制显然是 10,000 项。在将这么多项目添加到缓存后,一些“旧”项目开始从缓存中消失。所以我的结论是,默认情况下, Ehcache具有 10,000 个项目的固定大小限制。另一方面,咖啡因似乎根本没有限制!我让测试运行了很长时间,但即使插入了大约 100 万个项目,之前插入的项目仍然没有被驱逐。那时我停止了测试。
那么,Caffeine与Ehcache不同,默认情况下没有大小限制吗?它会继续积累项目,直到最终我的应用程序因“内存不足”错误而崩溃,或者咖啡因中是否有一些逻辑会在“内存不足”的情况下驱逐项目?使用Caffeine时是否建议配置显式缓存大小限制?我会这么认为。但是,为什么 Play 默认不这样做呢?
不幸的是,Play Framework 的Cache 文档并没有明确说明Play 使用 Ehcache 和/或 Caffeine 的默认设置。此外,播放配置中的可用缓存选项列表(以及相应的默认值)将非常有帮助......
问候。
scala - 无法将 MockWS 与咖啡因一起测试
我正在尝试为 MockWS 和 Caffeine 的使用编写一个测试。不知何故,从 MockWS 返回的值无法被驱逐。当 executorContext 不同时我遇到过这个问题,但是即使我尝试通过使用 materializer 的 executorContext 来克服这个问题,它仍然无法驱逐 ws 的返回值。你对此有什么想法吗?
插件:
依赖项:
FakeTicker.scala
(更新:25/08/2021)测试用例:
输出(fakeTicker 不影响 ws 的结果驱逐):
示例代码仓库:https ://github.com/veysiertekin/mockws-caffeine-test
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
会不会是因为数据过期或者数据太大导致缓存读取失败?