Spring Boot Cache TTL

我想使用Spring Boot Cache Abstraction来缓存一些数据(https://docs.spring.io/spring/docs/current/spring-framework-reference/html/cache.html) . 我愿意使用任何可用的提供程序 .

我需要的主要是:我希望能够设置对象级别TTL,而不仅仅是全局缓存级别TTL .

例如 . 对于我存储在缓存中的每个对象,我想 specify a custom TTL for the object based on some property of that object .

我知道要设置这样的东西,必须直接通过缓存提供程序完成 . 但我无法找到我的用例示例 - 只找到了设置全局TTL的用例 . 有人可以帮忙吗?

回答(2)

3 years ago

您需要查看可用于Spring引导的不同缓存实现的功能 .

基于条目值支持变量到期,对缓存实现的内部及其性能有影响 . 在变量到期时,通常需要一个O(log n)数据结构 . 例如, Guava 和 Caffeine 不支持它 . EHCache确实支持它,请参阅Documentation about expiry .

请求的功能“超出”Spring抽象,这意味着,您需要为一个特定的缓存实现生成代码 .

3 years ago

如果您正在使用redis,可以查看JetCache

@Cached(expire = 10, timeUnit = TimeUnit.MINUTES) User getUserById(long userId);