首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将TTL附加到Springboot中Redis Cache中的每个条目

如何将TTL附加到Springboot中Redis Cache中的每个条目
EN

Stack Overflow用户
提问于 2020-03-04 14:30:49
回答 1查看 1.4K关注 0票数 0

假设我有一个模型Employee,它有一个到期组件。当第一个请求来检索员工详细信息时,我希望基于 Employee对象(employee.getExpiry())的TTL将其存储在缓存中。

我无法在春季使用@Cachable来完成它。我查看了给定here的建议,但这使用了cacheManager,因此无法动态设置TTL或对特定缓存对象的过期。

我正在使用Redission进行缓存,我尝试了以下方法:

代码语言:javascript
复制
@Cacheable(value = "employees", key = "#designation")
public Employee retrieve(String designation) {
        LOG.info("Retrieving Employee with query parameters: {}", designation);
        Employee employee = employeeRepository.findByDesignation(designation);
        LOG.info("Retrieved Employee: {}", employee);
        RMapCache<String, Employee> employeCache = redissonClient.getMapCache("employees");
        employeCache.put(employee.getDesignation(), employee, employee.getExpiry(), TimeUnit.SECONDS);
        return employee;
    }

但不起作用。我正在使用redissionClient手动设置TTL,但该特定条目被@Cacheable(value = "employees", key = "#designation")替换。

当我尝试不使用@Cacheable时,它似乎很有效。

因此,我的问题是,如何使用@Cacheable动态地设置TTL?如果不是,手动使用RedissonClient是唯一的方法吗?

EN

回答 1

Stack Overflow用户

发布于 2020-03-06 09:26:23

Spring CacheManager API不允许每个条目定义不同的TTL。在这种情况下,RMapCache对象是唯一的方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60528360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档