问题标签 [caffeine]
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.
spring-boot - 跨多个实例驱逐内存缓存?
我们如何在不同的实例中驱逐内存中的缓存?
我们有一个横向扩展的架构,多个实例同时服务请求。它们中的每一个都附加了内存中的缓存。
我们需要立即驱逐所有实例。
为什么不用 Memcache/Redis 或其他提供商? 对 Redis/Memcache 的调用会产生网络延迟。除了速度之外,我们的数据大小要小得多,可以轻松放入一个实例中 [Max 100MB]
临时解决方案 作为临时解决方案,我们有基于时间的驱逐,时间相对较短 2.5 分钟。但是对于 2.5 分钟,它可以每个实例都可以提供自己的数据副本,这可能会导致不一致。我们如何一次在多个实例上缓存键?
spring-boot - 是否可以在 Spring Boot 中使用咖啡因为每个缓存设置不同的规范?
我有一个简单的 sprint boot 应用程序1.5.11.RELEASE
,@EnableCaching
在 ApplicationConfiguration
类上使用 spring boot。
pom.xml
应用程序属性
问题
我的问题很简单,如何为每个缓存指定不同的大小/过期时间。例如,cache-a
对于 有效可能是可以接受的1 day
。但cache-b
可能没问题1 week
。咖啡因缓存的规范似乎是全局的,CacheManager
而不是Cache
. 我错过了什么吗?也许有更适合我的用例的提供者?
java - 带有咖啡因的 Spring Boot 同步缓存不起作用
我正在使用 Spring Boot 1.5.12.RELEASE
,并将咖啡因2.6.2
作为缓存提供程序。
我的一项服务中有一种方法:
我希望只看到第一个日志一次,但如果我fetchThing
在第一个调用解决之前再次调用,则该值被计算两次:
如果我再次调用此函数,我看不到任何日志,因此缓存正在工作。
所以这似乎sync
不起作用。我错过了什么吗?
编辑:主类注释:
java-8 - 如何在 RxJava 中缓存项目并避免缓存踩踏?
假设我有以下代码:
感谢@BenManes,我可以使用 Caffeine 框架来解决缓存踩踏问题:
但是现在方法longLoadFromDatabase
返回 aSingle<Entity>
而不是 Entity 本身(第二个参数 forget
是来自 的映射器int -> Entity
),因此以前的解决方案将不再适用。
scala - Scala、缓存和咖啡因
Scala 新手,这可能是我的问题的根源!
我对向我的 Scala 2.12 应用程序添加缓存很感兴趣,并发现了许多 Scala 特定的 GitHub 项目,包括似乎是更流行的项目之一的Scala Cache 。
据我所知,这个项目为您提供了一个 Scala 惯用的外观 API,它允许您轻松地在不同的底层缓存实现(Memcached、Caffeine、Redis 等)之间进行选择(和切换)。
但是如果我已经知道我想使用Caffeine,并且我知道我永远不会将它换成任何不同的东西,而且我也不关心针对 Scala 式 API 进行编码......那么有什么阻止我只是将 Caffeine 依赖项直接引入我的项目并针对 Caffeine API 进行编码?还是在 Scala 和 JVM 之间发生了什么“魔法”使我无法这样做,因此需要 ScalaCache 库作为中间人?
java - 关于在应用程序缓存中保存用户名和密码的查询
我的基于休息的应用程序将从上游应用程序接收加密的用户名和密码。
然后,我的应用程序将与下游应用程序交互,下游应用程序将在其末尾实现一些逻辑(大约需要 1 小时,不知道为什么),他们会将我们需要发送回上游的响应交给我们应用。
现在,将用户名和密码存储在缓存中 1 小时是一个好主意,因为我们不想将敏感信息持久化到数据库中。
java - 是否有可能在咖啡因中获得一组候选驱逐键?
我正在尝试使用缓存来维护基于请求类型的可路由服务器列表。
在我只能n
启动服务器的情况下,重要的是同步从缓存中删除(并因此关闭)服务器,然后在缓存中添加(并因此启动)同一服务器(即,改变服务器可以处理的流量)。
在上面的代码中,没有阻塞就没有办法做到这一点。
在一个理想的世界中,删除必须在添加到缓存之前发生,所以我可以异步关闭服务器并等待一个ShutdownServer
事件......但是没有办法从方法中接收这个信号write
,这必然需要知道什么时候开始。换句话说,我想发送一个SwitchServerTraffic(from: RequestType, to: RequestType)
到server
,其中from
将是被驱逐的密钥,to
将是添加的密钥。
如果我可以访问候选驱逐集:当请求进来时,如果它的类型不在缓存中并且缓存已满,我可以从驱逐集中选择一个元素并关闭其服务器,然后添加请求像 Akka 一样同步输入缓存。
有没有办法访问 Caffeine 中的候选驱逐集?如果没有,是否有另一种方法来解决这个问题?
apache-spark - 在 Spark-streaming 中使用 Caffeine 缓存
我正在使用Caffeine来缓存数据库中的AsyncLoadingCache
查找数据。
现在我想把它集成到 Spark Streaming 中。我的想法是让每个工作人员以给定的刷新率维护这样的缓存。但是怎么做呢?
将其定义为广播变量并在每次超时时重新创建它并在工作人员之间传播会更好吗?
这里的最佳做法是什么?
java - 咖啡因或任何 JVM 缓存 API 的驱逐事件侦听器?
这里是 Java 8。当记录被逐出缓存时,是否有任何方法可以通知Caffeine缓存框架(或任何其他 JSR-107 兼容框架)?
也许某种EvictionEventListener
或什么?
咖啡因、番石榴、Hazelcast(基本上是“ JVM 缓存区”)等中是否有类似的东西?
java - 咖啡因 - 如何仅在创建时间后过期缓存值
咖啡因有expiresAfterWrite
查看最后写入时间的方法。我希望它只查看创建时间。因此,当第一个条目出现时,条目将在固定时间后过期,而无需查看此条目的更新次数。这可能吗?