SpringBoot整合Reids进行查询缓存

自行导入redis插件



//定义缓存数据 key 生成策略的bean 

 @Bean  
    public KeyGenerator wiselyKeyGenerator(){  
        return new KeyGenerator() {  
            @Override  
            public Object generate(Object target, Method method, Object... 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();  
            }  
        };  
  

    }  

 //创建RedisTemplate

    @Bean  
    public CacheManager cacheManager(  
            @SuppressWarnings("rawtypes") RedisTemplate redisTemplate) {  
        RedisCacheManager cacheManager = new RedisCacheManager(redisTemplate);  
        return cacheManager;  

    }  


    //Spring管理
    @Bean  
    public RedisTemplate<String, String> redisTemplate(  
            RedisConnectionFactory factory) {StringRedisTemplate template = new StringRedisTemplate(factory);  
        Jackson2JsonRedisSerializer 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);  
        template.setValueSerializer(jackson2JsonRedisSerializer);  
        template.afterPropertiesSet();  
        return template;  
    }  

  使用:  

      @Cacheable(value="role",key="'role'.concat(#id)")
public List<Role> selectByrUserId(int id) {
  return roleRespotry.selectByrUserId(id);
}

                                                                                  Cacheable查询
value 缓存的名称  @Cacheable(value=”list”)
 key 缓存的key,按照EL 表达式进行编写 @Cacheable(value=”list”,key=”#username”)
condition 缓存的条件,true才开启缓存,默认市false @Cacheable(value=list,condition=#username.length()>2)


                                                                              
                                                                       CachePut更新
value 缓存的名称  @CachePut(value=”list”)
 key 缓存的key,按照EL 表达式进行编写 @CachePut(value=”list”,key=”#username”)
condition 缓存的条件,true才开启缓存,默认市false @CachePut(value=list,condition=#username.length()>2)

 
                                                         
CacheEvict删除
value 缓存的名称  @CachEvict(value=”list”)   
key 缓存的key,按照EL 表达式进行编写 @CachEvict(value=”list”,key=”#username”)  
condition 缓存的条件,true才开启缓存,默认市false @CachEvict(value=list,condition=#username.length()>2)  
allEntries 清空缓存内容,缺省为 false,如果指定为 true, @CachEvict(value=”list”,allEntries=true)  

猜你喜欢

转载自blog.csdn.net/qq_35002313/article/details/80584460