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

java - 使用 NavigableMap 寻找类似 Guava Cache 的东西

我正在寻找一个缓存工具,如果预定义的时间间隔到期(如 Guava Cache),它可以删除旧条目,但在内部使用 NavigableMap 接口。

有没有类似的东西?

0 投票
1 回答
473 浏览

java - 使用 Guava 收集缓存过滤器

我正在开发一个对自动机执行一些操作的程序。自动机由状态(又名节点)和转换(又名边)组成,我需要过滤它们以检索具有特定属性的集合。这个操作很容易实现,但是要执行几次,我会在上面写一点缓存。

在下面的代码片段中有我的实现,我想知道是否是过滤和记忆 observable transitions 的正确方法

问题:

  1. 这是对的吗?
  2. 如果转换改变了其可观察性,此信息是否也会传播给供应商?

我很抱歉我的英语很差,我希望这足够清楚。

0 投票
0 回答
816 浏览

java - Spring 3.2 + Guava:从缓存管理器获取 Guava 缓存

尝试从缓存管理器取回 Guava 缓存时遇到问题,而是获得了 Spring Cache。

这是我的 SpringConfig 文件中的 bean:

然后我就可以使用 @Cacheable 了:

一切正常,但我无法获取 CacheBuilder 创建的缓存 Guava 对象以调用 stats() 方法。

这就是我获取缓存的方式:

最后一个缓存是 Spring 缓存,如果将其转换为 Guava 缓存,则会出现错误。

这可能吗 ?还是我做错了什么?

0 投票
1 回答
154 浏览

enums - Google Guava 中的静态键

我想LoadingCache<EnumKeys, Map<String,String>>Guava. 我们可以enum在番石榴中使用钥匙吗?当我们为我们创建时Mapenum我们使用EnumHasMap. 是否也存在类似的东西Guava

0 投票
1 回答
112 浏览

java - 在特定的时间间隔内阻止特定的机器

我正在开发一个库,我在其中对我的服务进行 Http 调用,如果我的服务机器没有响应(有套接字超时或连接超时),我将它们添加到我的本地blockList,如果机器被阻塞 5 次,那么我不要给他们打电话。

因此,假设如果 machineA没有响应(throwing RestClientException),我将onFailure每次调用方法并继续增加计数器,然后在再次调用时,我通过作为主机名和 5 作为阈值传递来machineA检查方法,所以如果已被阻止 5 次,那么我不会打电话给他们。我的库是多线程的,所以这就是我在这里使用 volatile 的原因,因为我希望所有线程都看到相同的值。isBlockedmachineAmachineA

以下是我在DataMapping课堂上的内容:

问题陈述:-

现在我想再添加一个特性——如果machineA被阻塞(因为它的阻塞计数>= 5),那么我想让它阻塞 x 间隔。我将有另一个参数(key.getInterval()),它会告诉我们我想让这台机器阻塞多长时间,在这个间隔过去之后,只有我会开始打电话给他们。我无法理解如何添加此功能?

下面是我的主线程代码,我在其中使用DataMapping方法来检查主机名是否被阻止以及阻止主机名。

如何在特定时间段内阻止特定机器​​,并且一旦该时间间隔过去,然后才开始调用它们?

0 投票
1 回答
602 浏览

jakarta-ee - google guava 缓存存储值在哪里?..在 EJB 中使用它是否安全?

在我的 Web 应用程序中,我使用 google guava 缓存在 EJB 级别存储用户详细信息。

只是想知道这样做是否有任何暗示。

google guava 缓存在哪里存储其值?

0 投票
2 回答
402 浏览

guava - 可以将weakValues() 和expireAfterAccess() 结合起来吗?

我想做这样的事情:

我期望的行为是,只有在未引用该值并且过期时间已过时,条目才会过期。这就是这种用法的工作方式吗?

0 投票
1 回答
4050 浏览

jakarta-ee - 谷歌缓存可以在集群环境中工作吗

我正在使用谷歌缓存在单例 ejb 中缓存数据。并且缓存的资源被多个ejb使用。但是现在不确定如果将相同的应用程序部署在可以存在多个 JVM 的多节点集群环境中是否可以工作。

请指教!

0 投票
1 回答
1295 浏览

java - 如何在谷歌番石榴缓存中传递两个参数而不是键

我已经使用谷歌番石榴缓存创建了一个缓存

这是我的实现

现在在 channelService.getDistributionChannelById 方法中,我需要 paas 两个值,即 channelId 和 apiKey。

目前它的工作正常,因为 apiKey 是恒定的。但是现在 apiKey 被修改为这个常量~时间戳。例如:

SOLR_API_KEY~123456789

所以我的问题是:

如何在不修改密钥的情况下在channelServiceCache.get(key, extraparam here)中再传递一个参数。

我尝试过的事情:我创建了一个 Key 对象,其中将存在我的实际密钥和 apiKey 并将其作为 key 传递给channelServiceCache 但这将终止缓存的目的,因为每次终止都将被视为一个新密钥,因为它包含时间戳在 apikey 中。

有什么办法可以用谷歌番石榴做到这一点?

编辑:我错过的另一件事:

服务将为相同的 channelId 提供相同的输出,API 密钥仅用于身份验证和日志记录以及监控请求计数。但我想这是有道理的,如果我可以从缓存中使用相同的 channelID 服务下一个请求,那么 apiKey 将永远不会被传递给实际的服务(实际的日志记录和监控正在发生。)有没有其他方法来实现这个功能而不实际谷歌番石榴的杀戮目的。

0 投票
1 回答
283 浏览

spring - Spring缓存番石榴TTL配置的奇怪行为

我有以下弹簧缓存配置:

然后我对其进行了测试:

有人可以解释一下吗?