请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

缓存设置随机过期时间

老师,您之前提及“Spring @Cacheable是并不支持Expire失效时间的设定的。但是可以通过 使用自定义的RedisCacheManager来实现设置缓存的 ttl,
(解析出@Cacheable的cacheName 中# 后的过期时间,

// #后面是缓存过期时间
@Cacheable(cacheNames = {"testCache#3600"}
@Override
public RPanUser getById(Serializable id) {
    return mapper.selectById(id);
}

但是这种方法好像只能作用于 “基于注解的缓存”?手动实现的缓存好像不适用?

  • 那么能否 使用自定义的RedisCacheManager的时候,就设置 cacheConfig = cacheConfig.entryTtl(Duration.ofSeconds(“随机的过期时间”)) ?这样就也能适用于 手动缓存?

这个方法是否可行呢?

正在回答 回答被采纳积分+3

2回答

RubinChu 2024-04-29 07:09:54

我记得不用太纠结这个,如果特别需要每个缓存一个过期时间,就自己分装缓存的架构,自己定义注解并实现切面是最好的方式。在实现的时候参考spring关于缓存好的设计思想就行

0 回复 有任何疑惑可以回复我~
RubinChu 2024-04-29 07:08:43

设置数据是一次性的,而且看样子你设置的自定义cache manager是一个全局设置,其实没有改变对应每个缓存一个过期时间的不支持的现状。

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信