标签:val cts 定义 pat manager int art getname redist
说明:由于使用的是window系统,所以本文中使用的redis是再Docker中运行的。
至于如何启动redis这里不再说明,需要的请自行百度。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
/**
* redis配置类
*/
@Configuration
//开启缓存
@EnableCaching
public class RedisConfig extends CachingConfigurerSupport {
/**
* 自定义生成key的规则
* @return
*/
@Override
public KeyGenerator keyGenerator() {
return new KeyGenerator() {
@Override
public Object generate(Object o, Method method, Object... objects) {
//格式化缓存key字符串
StringBuilder sb = new StringBuilder();
//追加类名
sb.append(o.getClass().getName());
//追加方法名
sb.append(method.getName());
System.out.println("调用Redis缓存Key : " + sb.toString());
return sb.toString();
}
};
}
/**
* 采用RedisCacheManager作为缓存管理器
* @param connectionFactory
*/
@Bean
public CacheManager cacheManager(RedisConnectionFactory connectionFactory) {
RedisCacheManager redisCacheManager = RedisCacheManager.create(connectionFactory);
return redisCacheManager;
}
@Bean
public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory factory) {
// 解决键、值序列化问题
StringRedisTemplate template = new StringRedisTemplate(factory);
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
ObjectMapper om = new ObjectMapper();
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(om);
template.setValueSerializer(jackson2JsonRedisSerializer);
template.afterPropertiesSet();
return template;
}
}
redis工具类主要使用redisTemplate类进行操作,至于怎么操作这里不再阐述。你可以找网上大佬封装好的,也可以自己封装。
这里主要讲解一下 @Cacheable、@CachePut、@CacheEvict
@Cacheable(key = "#id",value = "key",unless = "#id==null")
@PostMapping("/{id}/{value}")
public String setKey(@PathVariable String value,@PathVariable String id){
return value+id;
}
PS:若去掉value属性则会抛错。若没有key则会进入到配置类中的key生成策略中生成对应key。
最后进入redis中的key格式回事 key::value
@CacheEvict(value = "key",key = "#id")
@DeleteMapping("/{id}")
public String clear(@PathVariable String id){
return null;
}
@CachePut(value = "value", key = "#id")
@PutMapping("/{id}/{value}")
public User save(){
return null;
}
PS:参数, value缓存名、 key缓存键值、 condition满足缓存条件、unless否决缓存条件
具体又哪些参数根据注解的参数来对照。
Spring Boot 学习----SpringBoot整合Redis
标签:val cts 定义 pat manager int art getname redist
原文地址:https://www.cnblogs.com/bananafish/p/12347035.html