我正在使用 Caffeine v2.8.5,我想创建一个具有可变到期时间的缓存,基于:
无论先发生什么都应该触发该条目的删除。
缓存将成为三层值解析的一部分:
Redis用作全局缓存,以便多个应用程序/实例可以共享缓存数据,但这种解析经常发生,以至于它不能用于每个请求,因此需要另一个缓存层。
根据请求时间,请求的数据具有不同的 TTL。因此,虽然当我们请求 REST API 时过期时间可能是固定的,并且过期时间是在 Redis 中设置的,但在 Caffeine 中该时间将是动态的,因为过期时间基于 Redis 密钥的剩余 TTL。
情况 (2) 和 (3) 已经在我的 Caffeine 缓存的 CacheLoader 中得到解决(我在通读模式下使用缓存)。为了控制过期,我已经发现,我必须使用高级 Expiry API,并且我还研究了类似的问题,例如(Specify expiry for an Entry)和(Expire cached value after create time)。所以我为我的键想出了一个包装对象,如下所示:
import lombok.Value;
import org.jetbrains.annotations.NotNull;
import …Run Code Online (Sandbox Code Playgroud)