Spring Cache是Spring框架提供的一个抽象层,用于简化缓存的使用。Redis是一种开源的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息代理。在Spring Cache中使用Redis可以提高应用程序性能。
首先我们需要在项目中引入相关依赖。对于Maven项目,在pom.xml文件中添加以下依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
然后我们需要配置Redis连接信息和CacheManager,在application.properties或application.yml文件里添加以下配置:
# Redis连接信息
spring.redis.host=your_redis_host
spring.redis.port=your_redis_port
# 如果有密码则需要配置密码项:
# spring.redis.password=your_redis_password
接下来在Java代码里创建一个CacheManager Bean,并设置默认过期时间:
@Configuration
@EnableCaching // 启动缓存功能
public class RedisConfig {
@Autowired
private RedisConnectionFactory connectionFactory;
@Bean
public CacheManager cacheManager() {
// 使用Jackson2JsonRedisSerializer来序列化和反序列化redis的value值(默认使用JDK的序列化方式)
Jackson2JsonRedisSerializer serializer = new Jackson2JsonRedisSerializer(Object.class);
ObjectMapper mapper = new ObjectMapper();
mapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
serializer.setObjectMapper(mapper);
// 配置redis缓存管理对象
RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig()
.entryTtl(Duration.ofHours(1)) // 设置缓存有效期一小时
.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(serializer))
.disableCachingNullValues();
return RedisCacheManager.builder(connectionFactory)
.cacheDefaults(config)
.build();
}
}
在上述代码中,我们设置了默认的过期时间为1小时。如果你想为不同的缓存设置不同的过期时间,你可以在创建RedisCacheManager时使用initialCacheConfigurations方法来指定:
Map<String, RedisCacheConfiguration> configMap = new HashMap<>();
configMap.put("cacheName1", config.entryTtl(Duration.ofMinutes(10)));
configMap.put("cacheName2", config.entryTtl(Duration.ofMinutes(30)));
return RedisCacheManager.builder(connectionFactory)
.withInitialCacheConfigurations(configMap)
.build();
最后,在需要使用缓存的方法上添加@Cachable注解:
@Service
public class SomeService {
@Cachable(value="cacheName1", key="#id")
public SomeObject getSomeObject(String id) {
// ...
}
}
以上就是Spring Cache和Redis结合使用,并配置过期时间的基本步骤。这样配置后,Spring会自动处理数据读取和写入到Redis中,并且会根据我们设定好的规则自动处理数据过期问题。
海外免备案云服务器链接:www.tsyvps.com
蓝易云香港五网CN2 GIA/GT精品网络服务器。拒绝绕路,拒绝不稳定。