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

java - 刷新缓存时保留旧值?

我创建了一个配置了 refreshAfterWrite 的咖啡因 AsyncLoadingCache。对于给定的键,如果一个值已经加载到缓存中并且在刷新期间出现错误,则该键/值将被删除。而不是这个,我想保留旧值并更新过期时间戳,这样它就不会立即再次刷新。有没有办法配置这种行为?

0 投票
0 回答
48 浏览

java - 如何将新缓存添加到 CaffeineCacheManager

我正在寻找将新缓存动态添加到已经初始化的CaffeineCacheManager实例。

该课程似乎没有明显的方法来做到这一点。我可以通过添加一个新的缓存名称,CaffeineCacheManager.getCacheNames().add()但我不确定那是正确的方法。

我之所以这么想,是因为该方法的文档setCacheNames()基本上指出,在您更改了一次集合后,您将无法添加任何新的缓存。继承人的实际文档:

为此 CacheManager 的“静态”模式指定一组缓存名称。调用此方法后,缓存的数量及其名称将被固定,在运行时不会创建更多的缓存区域。使用 null 集合参数调用它会将模式重置为“动态”,从而允许再次进一步创建缓存

最后是registerCustomCache()可以使用的方法。但是这种方法的文档确实令人困惑。

使用此缓存管理器注册给定的本地 Caffeine Cache 实例,使其适应 Spring 的缓存 API 以通过 getCache(java.lang.String) 公开。可以并排注册任意数量的此类自定义缓存。这允许每个缓存的自定义设置(与所有缓存共享缓存管理器配置中的公共设置相反)并且通常与 Caffeine 构建器 API 一起使用:registerCustomCache("myCache", Caffeine.newBuilder().maximumSize(10)。 build()) 请注意,任何其他缓存,无论是通过 setCacheNames(java.util.Collection<java.lang.String>) 静态指定还是按需动态构建,仍然使用缓存管理器配置中的通用设置进行操作

最后一部分特别令人困惑:

当我registerCustomCache()用来添加缓存时,我基本上是在动态构建缓存并使用这种方法allows for custom settings per cache,但是文档下面的几行突然说它们都是still operate with the common settings in the cache manager's configuration

所以我现在有点困惑。请告诉我应该使用哪种方法将新缓存动态添加到缓存管理器。

谢谢

0 投票
0 回答
56 浏览

spring-boot - Spring Webflux 中的 refreshAfterWrite 缓存

我正在尝试为我的 spring webflux 应用程序创建一个咖啡因缓存。

这是实现:

这里需要注意的是,我不能在refreshAfterWrite这里使用该物业。它仅适用于加载缓存,我不能使用加载缓存,因为加载器函数返回一个 Mono。

加载器功能如下:

我从 Mono 中提取值然后将其存储在缓存中的实现:

我可以通过使用该expireAfterWrite属性来控制缓存,但同样,它只会从内存缓存中逐出键。我想要与refreshAfterWrite加载缓存以外的缓存相同的控件。我该如何实施?

0 投票
0 回答
23 浏览

java - 分布式系统的高效缓存机制

我有一个表,它将在启动时加载并存储在内存缓存中。当对表的插入操作完成时,本地缓存被更新,然后将被插入到数据库中。当其他节点上的缓存未命中时,我不能简单地从 db 中搜索一个值,因为我需要加载整个表,这是一个繁重的操作。我如何编写一种机制,以便拥有本地缓存​​的其他节点获取存储在数据库中的新项目。

0 投票
1 回答
24 浏览

spring - Caching (Caffeine) & Spring - 基于方法参数值的两个缓存

我有一个关于在春季使用咖啡因进行缓存的问题。

我有一个缓存配置:

还有一个@Cachaeble方法:

现在,这些group值是预定义的,它们只能是group1group2并且group3将来会添加。

这种缓存机制是否可以根据值来配置,String group所以someDataCache1会在什么时候String group使用,什么时候使用等等?group1someDataCache1String groupgroup2