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

spring-boot - 在 Spring Boot 应用程序中进行 put 操作后,CaffeineCache 不会立即刷新

我的 Spring Boot 应用程序中有一个随机问题CaffeineCache。问题在于一个集成测试,它使下一个

  • 查找用户
  • 删除它
  • 再次找到它

find似乎有时缓存在删除后立即第二次调用之前没有按时刷新。

这是find方法的简化签名

以及删除的简化签名

我想调用后delete缓存不会立即更新,这就是find第二次不调用方法的原因。它从 10 发生 1 次。

关于修复的任何想法?

0 投票
1 回答
1377 浏览

java - 咖啡因缓存“无法转换为 org.springframework.cache.Cache”

我正在尝试使用 Spring Boot 缓存。我有一个缓存类:

我有一个配置:

我有一个缓存:

我收到此错误:

我也尝试过使用 Guava 缓存,但我得到了同样的错误。我在这里想念什么?如何强制 Spring 使用咖啡因?

0 投票
1 回答
546 浏览

jmx - Is there a way to enable Caffeine MBean registration?

I am using Scaffeine in my project (https://github.com/blemale/scaffeine), a Scala wrapper for Caffeine (https://github.com/ben-manes/caffeine). I also have a prometheus JMX collector embedded in my metrics API (https://github.com/Segence/kamon-jmx-collector).

However when I launch my application, I can't really see any MBeans for Caffeine in VisualVM.

Also, when looking at the Caffeine project, I found that in the caffeine/jcache/src/main/resources/reference.conf there is a config for JMX monitoring:

Both are set to false. Is there a way to configure Caffeine so that it exposes MBeans to JMX?

0 投票
0 回答
645 浏览

java - 咖啡因:Memoize 或 Cache Builder 一个大项目列表?

作为免责声明,我是 Caffeine 的新手,正在探索这种轻量级的方法。

我有一个从包含超过 20K 的简单 ItemLOV 双属性对象的数据库中获取的集合。它们被拉出、转换/转换为:

我正在寻找的是将缓存的项目设置为我拥有的第三方组件的 setItems 方法。setItems 是一个公共 void 方法,它允许在以下位置解析三个选项:

  • public void setItems(final Collection<T> items)
  • public void setItems(Stream<T> streamOfItems)
  • public void setItems(@SuppressWarnings("unchecked") final T... items)

我注意到有一个类似的帖子:Simple Way to Cache a List of Collection in Java但我不确定的是:

  1. 我的列表应该使用 memoize 还是缓存构建器?
  2. 如果最好使用 memoize,示例代码(在链接的帖子中)中使用的供应商演员表是来自 java.util 包还是 Guava 包?
  3. 在将缓存设置为 setItems 方法之前,是否需要再次将缓存重新转换为列表?
  4. 对于 memoizeWithExpiration 方法,是否可以将上面的现有代码作为委托参数而不是空的供应商集合进行转置/移动,还是我们需要在 get() 方法中进行?将现有列表解析为委托是很棒的,但不是很确定。
0 投票
1 回答
692 浏览

java - 动态切换 Caffeine Cache 上的记录统计信息

我希望能够通过 REST 端点或 JMX 方法按需动态切换咖啡因缓存统计信息的记录

我们有一个大型应用程序,我们在其中使用多个咖啡因缓存实例。我们可以使用所有可能的性能升级,因此持续录制似乎是多余的。特别是如果 JavaDoc 说记录有性能成本。经过我的分析,我认为它没有直接支持。或者是吗?

我有 2 个统计目标,第一个是能够调整我们的缓存策略。确定我们的命中率糟糕的地方,或者我们实际上不需要缓存的地方。为了适应这种情况,我们可能会在打开录制的情况下进行临时发布,然后再进行最终发布。这意味着这个解决方案根本不是动态的。

第二个目标是使用它来确定系统故障的原因。在实时生产环境中诊断错误状态。为了保持我所有的理想要求,这必须是动态的。如果我不能更改缓存实例,我想我可以替换该实例。这会给系统带来巨大的时间负载,因为它基本上会清除所有缓存。

为了避免清除,我们可能会以某种方式将值廉价地传递给新实例,并切换统计记录。我还不知道如何,甚至可能。

所以我的问题是实现我的目标的最佳方式是什么?

0 投票
2 回答
7747 浏览

java - Spring Boot Cache 中的咖啡因缓存:获取所有缓存的键

我正在为 Spring Cache 使用 Caffeine Cache 库。有没有办法获取所有缓存的密钥?

我当前的应用程序处理近乎实时的数据,流程为:

在此处输入图像描述

Cache Updater Thread(无论用户请求如何,都以固定间隔运行)中,我需要获取当前缓存中的所有键,从 Db 获取它们的最新数据,然后用于@CachePut更新缓存。

0 投票
1 回答
623 浏览

spring-boot - 使用 Caffeine Cache Springboot 缓存 Kafka 记录

我试图在间隔发布后的 3 分钟内缓存 Kafka 记录,因为它将过期并从缓存中删除。

每个使用在 springboot 中编写的 kafka 消费者获取的传入记录都需要首先在缓存中更新,然后如果它存在,如果它与缓存记录匹配,我需要丢弃下一个重复记录。

我尝试使用咖啡因缓存如下,

我的卡夫卡消费者如下,

我的缓存服务如下,

但是每次记录进入消费者时,我的缓存总是空的。它没有保存记录。

修改完成:

在完成建议后,我添加了如下配置文件,更多类型的研发删除了一些早期的逻辑,现在缓存按预期工作,但是当所有三个消费者都发送相同的记录时,重复检查失败。

`

`

现在我使用上面的缓存作为手动放置和获取。

0 投票
0 回答
482 浏览

java - Spring boot 2.2.4是否支持Caffeine AsyncCache实现

我刚刚开始使用咖啡因。我看到CaffeineCacheSpring Boot 中的类只支持CacheCaffeine 的接口实现,如下面的代码所示,但我想知道 Spring Boot 是否支持实现AsyncCache?谢谢

0 投票
1 回答
1553 浏览

spring - 配置 spring 咖啡因缓存管理器时遇到问题

我有一个 Spring Boot 项目,它用作其他项目的库(打包的 jar 文件)。我正在尝试配置咖啡因缓存,该缓存将在向服务发出请求后异步刷新。

pom.xml(包括):

我的配置类:

DAO 层(这里需要缓存):

DAO 层(这里也需要缓存):

运行此设置时,我遇到了错误堆栈:

不确定设置中缺少什么?

0 投票
0 回答
94 浏览

java - CaffeineCache为什么使用refreshAfterWrite时loadSuccessCount不增加?

我在 CaffeineCache 中使用 LoadingCache。我将 refreshAfterWrite 设置为 30 分钟,并通过 Caffeine.stats() 检查了统计数据。我预计 loadSuccessCount 值将在 30 分钟后增加,但与 30 分钟前相同。

下面是代码:

下面是我试图检查的日志。


2020-04-13 00:13:42 [scheduling-1] INFO cnapsservice.OlapTableService - CodeListCache Stats : CacheStats{ hitCount=0, missCount=30, loadSuccessCount=30 , loadFailureCount=0, totalLoadTime=2139529433, evictionCount=0, evictionWeight =0}

2020-04-13 01:08:42 [scheduling-1] INFO cnapsservice.OlapTableService - CodeListCache Stats:CacheStats{ hitCount=102,missCount=30,loadSuccessCount=30,loadFailureCount=0,totalLoadTime=2139529433,evictionCount=0,evictionWeight =0}


我可以看到 hitCount 正在增长,但我不确定缓存是否重新加载成功,因为 loadSuccessCount 没有改变。我认为这refreshAfterWrite将在最后一次写入后 30 分钟更新每个键的值,这会增加“loadSuccessCount”。

所以我的问题是,

  • 谁能告诉我这是正常的还是错误的?

  • 如何检查缓存刷新是否正常?