首页 > 技术文章 > SpringBoot整合Redis

liangshandada 2018-04-23 18:16 原文

1.maven引入redis
<dependency>  
    <groupId>org.springframework.boot</groupId>  
    <artifactId>spring-boot-starter-redis</artifactId>  
</dependency>
2.添加一个Redis的配置类
/**
 * 缓存配置类
 * Create by lvls on 2018/4/11
 */
@Configuration
@EnableCaching
public class RedisConfig extends CachingConfigurerSupport {

    @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();
            }
        };

    }

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

    @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;
    }
}
3.redis的配置
redis:
      # Redis数据库索引(默认为0)
      database: 0
      host: 39.107.113.188
      port: 6379
      password: lls19940420
      # 连接超时时间(毫秒)
      timeout: 0
      pool:
        # 连接池最大连接数(使用负值表示没有限制)
        max-active: 8
        # 连接池最大阻塞等待时间(使用负值表示没有限制)
        max-wait: -1
        # 连接池中的最大空闲连接
        max-idle: 8
        # 连接池中的最小空闲连接
        min-idle: 0
4.在查询的是用注解去设置缓存
@Cacheable(cacheNames ="findListTestRedis",keyGenerator = "wiselyKeyGenerator")//在redis中开启key为findAllUser开头的存储空间
@Override
public List<Topic> findListTestRedis() {
  System.out.println("打印语句则没有走缓存");
  List<Topic> list = topicMapper.getNewTopic();
  return list;
}

 

推荐阅读