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("進(jìn)行查詢實(shí)體 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)
                //設(shè)置默認(rèn)超過期時間是30秒
        ).entryTtl(Duration.ofMinutes(30));

        return redisCacheConfiguration;
    }

}

沒有打印sql,說明緩存成功,與redis集成就完成了

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容