SpringBoot Redis 2.0.x
【摘要】 * redis的安装在笔者之前的文章中有介绍redis的安装,不会的可以去看 笔者之前写的文章[redis安装](https://www.jianshu.com/p/64a5112fdfb9)* 完成安装后如果不熟悉redis的操作,redis官方文档也有基本操作指南,[redis基本操作](http://doc.redisfans.com/),如果觉得没问题了就可以开始对redis的整合...
* redis的安装
在笔者之前的文章中有介绍redis的安装,不会的可
以去看 笔者之前写的文章Redis安装
完成安装后如果不熟悉redis的
操作,redis官方文档也有基本操作指南,Redis基本操作,如果觉得没问题了就可以开始对redis的整合
1. maven安装依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>
redis自动会吧cache的依赖带过来,所有不用配置,如图

2. 启动类增加@EnableCaching 注解
@SpringBootApplication
@MapperScan("com.tanoak.mapper")
@EnableCaching
public class BootRedisApplication {
public static void main(String[] args) {
SpringApplication.run(BootRedisApplication.class, args);
}
}3. service层增加@Cacheable 注解
@Override
@Cacheable(cacheNames= "tea")
public Teacher getTeaById(Integer id) {
logger.info("进行查询实体 ID为"+id);
return teacherMapper.getTeaById(id) ;
}4. controller 查询
@GetMapping("/tea/{id}")
public Teacher getTea(@PathVariable("id")Integer id){
returnteacherService.getTeaById(id) ;
}## RedisCacheManager 配置
在SpringBoot2.x中,移除了1.x中的配置,因此要配置Json序列化与1.x的差别很大,看代码
@Configuration
@EnableCaching
public class MyRedisConfig extends CachingConfigurerSupport {
/*
*自定义键生成策略
*/
@Bean
public KeyGenerator KeyGenerator() {
return (target, method, params) -> {
StringBuilder sb = new StringBuilder();
sb.append(target.getClass().getName());
sb.append(method.getName());
for (Object obj : params) {
sb.append(obj.toString());
}
return sb.toString();
};
}@Bean
public RedisCacheConfiguration redisCacheConfiguration() {
Jackson2JsonRedisSerializer<Object> 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);
RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig();
redisCacheConfiguration = redisCacheConfiguration.serializeValuesWith(
RedisSerializationContext
.SerializationPair
.fromSerializer(jackson2JsonRedisSerializer)
//设置默认超过期时间是30秒
).entryTtl(Duration.ofMinutes(30));
return redisCacheConfiguration;
}
}

没有打印sql,说明缓存成功,与redis集成就完成了
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)