Spring boot 2.0.x 集成 redis 使用 @Cacheable等注解

Spring boot 2.0.x 集成 redis

在pom.xml中导入

    
          redis.clients  
          jedis          
         
                 
         com.fasterxml.jackson.core  
          jackson-annotations  
        
        
          org.springframework.boot  
          spring-boot-starter-redis  
          RELEASE  
        

在springboot的application.yml 中进行redis参数设置

spring:  
  redis:  
    database: 0  
    host: 127.0.0.1  
    port: 6379   
    timeout: 5000    

新建配置类RedisConfig.java

  1. package com.project.config;  
  2.   
  3. import com.fasterxml.jackson.annotation.JsonAutoDetect;  
  4. import com.fasterxml.jackson.annotation.PropertyAccessor;  
  5. import com.fasterxml.jackson.databind.ObjectMapper;  
  6. import org.springframework.cache.CacheManager;  
  7. import org.springframework.cache.annotation.CachingConfigurerSupport;  
  8. import org.springframework.cache.annotation.EnableCaching;  
  9. import org.springframework.context.annotation.Bean;  
  10. import org.springframework.context.annotation.Configuration;  
  11. import org.springframework.data.redis.cache.RedisCacheConfiguration;  
  12. import org.springframework.data.redis.cache.RedisCacheManager;  
  13. import org.springframework.data.redis.connection.RedisConnectionFactory;  
  14. import org.springframework.data.redis.core.RedisTemplate;  
  15. import org.springframework.data.redis.core.StringRedisTemplate;  
  16. import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;  
  17. import org.springframework.data.redis.serializer.RedisSerializer;  
  18. import org.springframework.data.redis.serializer.StringRedisSerializer;  
  19.   
  20. import java.time.Duration;  
  21.    
  22.   
  23. @Configuration  
  24. @EnableCaching  
  25. public class RedisConfig extends CachingConfigurerSupport {  
  26.   
  27.     @Bean  
  28.     public CacheManager cacheManager(RedisConnectionFactory factory) {  
  29.         RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig()  
  30.                 .entryTtl(Duration.ofSeconds(60))  
  31.                 .disableCachingNullValues();  
  32.   
  33.         return RedisCacheManager.builder(factory)  
  34.                 .cacheDefaults(config)  
  35.                 .transactionAware()  
  36.                 .build();  
  37.     }  
  38.   
  39.     @Bean  
  40.     public RedisTemplate redisTemplate(RedisConnectionFactory factory) {  
  41.         StringRedisTemplate template = new StringRedisTemplate(factory);  
  42.   
  43.         RedisSerializer keySerializer = new StringRedisSerializer(); // 设置key序列化类,否则key前面会多了一些乱码  
  44.         template.setKeySerializer(keySerializer);  
  45.         setValueSerializer(template);//设置value序列化  
  46.         template.afterPropertiesSet();  
  47.         template.setEnableTransactionSupport(true);  
  48.         return template;  
  49.     }  
  50.   
  51.     private void setValueSerializer(StringRedisTemplate template) {  
  52.         @SuppressWarnings({"rawtypes""unchecked"})  
  53.         Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);  
  54.         ObjectMapper om = new ObjectMapper();  
  55.         om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);  
  56.         om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);  
  57.         jackson2JsonRedisSerializer.setObjectMapper(om);  
  58.         template.setValueSerializer(jackson2JsonRedisSerializer);  
  59.     }   
  60. }   

完成以上步骤即可使用@Cacheable等缓存注解

  1. @Service  
  2. public class ResourcesOptionService {  
  3.       
  4.     @Cacheable(value = "xxx" ,key = "#type")  
  5.     public List searchxxxlist(String type ,ExpressionList list){  
  6.            
  7.         List xxxlist= list.findList();  
  8.         System.out.println("进入缓存");  
  9.         return xxxlist;  
  10.     }  
  11. }  

具体注解详情请自行百度

以下链接为@Cacheable等注解 操作方式详解

https://blog.csdn.net/dreamhai/article/details/80642010

https://blog.csdn.net/qq_24084605/article/details/81003369

https://blog.csdn.net/BinshaoNo_1/article/details/84579326

你可能感兴趣的:(spring,boot)