SpringBoot Redis 2.0.x

举报
tanoak 发表于 2018/12/20 10:55:02 2018/12/20
【摘要】 * 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的依赖带过来,所有不用配置,如图

1240

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;
}

}



1240


1240

没有打印sql,说明缓存成功,与redis集成就完成了


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

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。