当前位置:首页 > 编程世界 2017年12月18日
spring boot 配置redis 源代码全展示

先配置属性:

复制代码
# database name
spring.redis.database=0
# server host
spring.redis.host=127.0.0.1  
# server password
spring.redis.password=123456
#connection port
spring.redis.port=6379
# pool settings ...
spring.redis.pool.max-idle=8
spring.redis.pool.min-idle=0
spring.redis.pool.max-active=8
spring.redis.pool.max-wait=-1
复制代码

 

然后redis配置

复制代码
package com.ming.config;import java.lang.reflect.Method;import java.util.HashMap;import java.util.Map;import org.springframework.cache.CacheManager;import org.springframework.cache.annotation.CachingConfigurerSupport;import org.springframework.cache.annotation.EnableCaching;import org.springframework.cache.interceptor.KeyGenerator;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.data.redis.cache.RedisCacheManager;import org.springframework.data.redis.connection.RedisConnectionFactory;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.data.redis.core.StringRedisTemplate;import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;import com.fasterxml.jackson.annotation.JsonAutoDetect;import com.fasterxml.jackson.annotation.PropertyAccessor;import com.fasterxml.jackson.databind.ObjectMapper;

@Configuration
@EnableCaching // 启用缓存,这个注解很重要;public class RedisCacheConfig extends CachingConfigurerSupport {     /**
     * 生成key的策略
     *
     * @return
     */
    @Bean    public KeyGenerator keyGenerator() {        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();
            }
        };
    }    
    /**
     * 管理缓存
     *
     * @param redisTemplate
     * @return
     */
    @SuppressWarnings("rawtypes")
    @Bean    public CacheManager cacheManager(RedisTemplate redisTemplate) {
        RedisCacheManager rcm = new RedisCacheManager(redisTemplate);        //设置缓存过期时间        // rcm.setDefaultExpiration(60);//秒        //设置value的过期时间
        Map<String,Long> map=new HashMap<String, Long>();
        map.put("test",60L);
        rcm.setExpires(map);        return rcm;
    }    
    /**
     * RedisTemplate配置
     * @param factory
     * @return
     */
    @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);//如果key是String 需要配置一下StringSerializer,不然key会乱码 /XX/XX         template.afterPropertiesSet();         return template;
    }

}
复制代码

 

复制代码
"unchecked" "rawtypes"
      remove(
      removePattern(<Serializable> keys = (keys.size() > 0
      remove(
     
      exists(
     
     Object get(= <Serializable, Object> operations ==
     
      set( result = <Serializable, Object> operations == 
     
      set( result = <Serializable, Object> operations ==
复制代码

 

最后是一个测试:

复制代码
package com.ming.web.controller;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import com.ming.config.RedisUtils;

@RestController
@RequestMapping("/caches")public class CacheController {
 
    @Autowired    private RedisUtils redisUtils;
    
    @RequestMapping("/test")    public String  test(){
        redisUtils.set("123", "hello world");
        System.out.println("进入了方法");
        String string= redisUtils.get("123").toString();        return string;
    }
    
}
复制代码