在Spring Boot 3项目中为不同缓存设置不同的过期时间
在Spring Boot 3项目中,你可以使用Spring Cache抽象和Cache Manager来为不同的缓存设置不同的过期时间。以下是一个使用Spring Cache和Redis作为缓存实现的例子:
- 添加依赖到你的
pom.xml
:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
- 配置Cache Manager,使用
RedisCacheConfiguration
来设置不同缓存的过期时间:
@Configuration
@EnableCaching
public class CacheConfig {
@Bean
public CacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) {
Map<String, RedisCacheConfiguration> cacheConfigurations = new HashMap<>();
cacheConfigurations.put("cache1", RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofSeconds(30)));
cacheConfigurations.put("cache2", RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofSeconds(60)));
return RedisCacheManager.builder(redisConnectionFactory)
.initialCacheConfigurations(cacheConfigurations)
.build();
}
}
- 使用缓存:
@Service
public class SomeService {
@Cacheable(value = "cache1", key = "#key")
public String someMethod(String key) {
// 业务逻辑
return "result";
}
}
在这个配置中,cache1
的过期时间设置为30秒,cache2
的过期时间设置为60秒。当someMethod
被@Cacheable
注解,并且传入的value
属性为cache1
时,它的结果将会被缓存,并且缓存将在30秒后过期。如果value
属性为cache2
,则缓存过期时间为60秒。
评论已关闭