第 1 集 SpringCache 框架常用之 Cacheable 实战
简介:SpringCache 框架常用注解 Cacheable
第 2 集 SpringCache 框架自定义 CacheManager 配置和过期时间
简介:SpringCache 框架自定义 CacheManager 配置和过期时间
-
修改 redis 缓存序列化器和配置 manager 过期时间
@Bean
@Primary
public RedisCacheManager cacheManager1Hour(RedisConnectionFactory connectionFactory) {
RedisCacheConfiguration config = instanceConfig(3600L);
return RedisCacheManager.builder(connectionFactory)
.cacheDefaults(config)
.transactionAware()
.build();
}
@Bean
public RedisCacheManager cacheManager1Day(RedisConnectionFactory connectionFactory) {
RedisCacheConfiguration config = instanceConfig(3600 * 24L);
return RedisCacheManager.builder(connectionFactory)
.cacheDefaults(config)
.transactionAware()
.build();
}
private RedisCacheConfiguration instanceConfig(Long ttl) {
Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class);
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
objectMapper.registerModule(new JavaTimeModule());
// 去掉各种@JsonSerialize注解的解析
objectMapper.configure(MapperFeature.USE_ANNOTATIONS, false);
// 只针对非空的值进行序列化
objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
// 将类型序列化到属性json字符串中
objectMapper.activateDefaultTyping(LaissezFaireSubTypeValidator.instance ,
ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY);
jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
return RedisCacheConfiguration.defaultCacheConfig()
.entryTtl(Duration.ofSeconds(ttl))
.disableCachingNullValues()
.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(jackson2JsonRedisSerializer));
}
第 3 集 SpringCache 框架自定义缓存 KeyGenerator
简介:SpringCache 框架自定义缓存 KeyGenerator
-
Key 规则定义麻烦,支持自定规则
-
实战
@Bean
public KeyGenerator springCacheDefaultKeyGenerator(){
return new KeyGenerator() {
@Override
public Object generate(Object o, Method method, Object... objects) {
return o.getClass().getSimpleName() + "_"
+ method.getName() + "_"
+ StringUtils.arrayToDelimitedString(objects, "_");
}
};
}
-
使用
-
key 属性和 keyGenerator 属性只能二选一
@Cacheable(value = {"product"},keyGenerator = "springCacheCustomKeyGenerator", cacheManager = "cacheManager1Minute")
第 4 集 SpringCache 框架常用之 CachePut 实战
简介:SpringCache 框架常用注解 CachePut
第 5 集 SpringCache 框架常用之 CacheEvict 实战
简介:SpringCache 框架常用注解 CacheEvict
第 6 集 SpringCache 框架常用之多注解组合 Caching 实战
简介:SpringCache 框架多注解组合 Caching
-
Caching
- 组合多个 Cache 注解使用
- 允许在同一方法上使用多个嵌套的@Cacheable、@CachePut 和@CacheEvict 注释
-
实战
@Caching(
cacheable = {
@Cacheable(value = "product",keyGenerator = "xdclassKeyGenerator")
},
put = {
@CachePut(value = "product",key = "#id"),
@CachePut(value = "product",key = "'stock:'+#id")
}
)