SpringBoot Redis 2.0.x

  • 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的依赖带过来,所有不用配置,如图


  1. 启动类增加@EnableCaching 注解
@SpringBootApplication
@MapperScan("com.tanoak.mapper")
@EnableCaching
public class BootRedisApplication {
    public static void main(String[] args) {
        SpringApplication.run(BootRedisApplication.class, args);
    }
}

  1. service层增加@Cacheable 注解
@Override
    @Cacheable(cacheNames= "tea")
    public Teacher getTeaById(Integer id) {
        logger.info("进行查询实体 ID为"+id);
        return teacherMapper.getTeaById(id) ;
    }

  1. controller 查询
@GetMapping("/tea/{id}")
public Teacher getTea(@PathVariable("id")Integer id){
        return  teacherService.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集成就完成了

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言: redis是一种nosql数据库,以<key,value>的形式存储数据,其速度相比于MySQL之类的数据...
    贪挽懒月阅读 20,980评论 4 25
  • jQuery下实现锚点链接的平滑滚动(带浮动侧边栏)css+html+js JQuery实现简单的平滑过渡效果 J...
    平凡执着阅读 4,953评论 0 0
  • # 一、框架概述 # 课程概述 1. laravel 4天(之前TP框架还是很大的区别)(国外框架) 2. 在线教...
    关进一阅读 413评论 0 0
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,974评论 6 342
  • 世人多在追求一个存在的意义,最终发现意义是虚幻的,过程才是有意义的。 人为什么要活着?因为有意识,有意思,有互动,...
    huiyf阅读 445评论 1 0