@Cacheable如何设置过期时间
时间: 2023-12-01 11:43:11 浏览: 104
localStorage 设置过期时间的方法实现
在使用@Cacheable注解时,可以通过自定义RedisCacheManager来实现ttl设置。具体步骤如下:
1.创建自定义的RedisCacheManager类,继承RedisCacheManager类,并重写createCache方法。
2.在createCache方法中,调用父类的createCache方法创建缓存对象,并设置过期时间。
3.在使用@Cacheable注解时,指定使用自定义的RedisCacheManager类。
下面是一个示例代码:
```java
public class CustomRedisCacheManager extends RedisCacheManager {
public CustomRedisCacheManager(RedisOperations redisOperations) {
super(redisOperations);
}
@Override
protected RedisCache createCache(String cacheName) {
// 获取缓存过期时间
Long ttl = getTtl(cacheName);
// 创建缓存对象,并设置过期时间
return new RedisCache(cacheName, (isUsePrefix() ? getCachePrefix().prefix(cacheName) : null),
getRedisOperations(), ttl);
}
// 获取缓存过期时间
private Long getTtl(String cacheName) {
if ("cacheName1".equals(cacheName)) {
return 60L;
} else if ("cacheName2".equals(cacheName)) {
return 120L;
}
return null;
}
}
```
使用示例:
```java
@Bean
public CacheManager cacheManager(RedisTemplate redisTemplate) {
CustomRedisCacheManager cacheManager = new CustomRedisCacheManager(redisTemplate);
return cacheManager;
}
```
阅读全文