redis
这里介绍一下 redis 的使用。
功能介绍
主要包含在 wmeimob-spring-boot-starter-redis
jar 中。
引入公共依赖:
xml
<dependency>
<groupId>com.wmeimob.fastboot</groupId>
<artifactId>wmeimob-spring-boot-starter-redis</artifactId>
</dependency>
支持的功能:
- redis template 配置自动装配
- spring cache 功能扩展
- redis 工具类使用
redis template 配置自动装配
java
/**
* redis template 自动装配类
*
* @author mjyang
* @date 2023/3/24 14:53
*/
@Configuration
public class RedisTemplateAutoConfiguration {
@Bean
@ConditionalOnMissingBean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(factory);
template.setKeySerializer(RedisSerializer.string());
template.setHashKeySerializer(RedisSerializer.string());
template.setValueSerializer(RedisSerializer.json());
template.setHashValueSerializer(RedisSerializer.json());
return template;
}
}
通过此配置类来确保 redis key,value 使用合适的配置。
spring cache 功能扩展
自定义 cache error handler
避免在使用 spring 缓存注解时, redis 出错时连同业务一起出错,至少还可以执行我们的业务逻辑。
java
@Override
public CacheErrorHandler errorHandler() {
return new CustomizerCacheErrorHandler();
}
spring cache 注解动态化
当我们在使用 spring cache 注解时,是无法设置过期时间的。例如:
java
@Cacheable(cacheNames = "books")
为此重写了 spring cache createRedisCache 方法,支持两种方式设置过期时间:
java
@Cacheable(cacheNames = "books#1s")
这里可以使用 1s,1d等时间单位,因为 createRedisCache 重写时,利用了 spring 工具类 DurationStyle.detectAndParse 进行解析
另外也可以基于配置类 CacheProperties
进行配置。
yml
spring:
cache:
redis:
xxx: 1d