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)