美文网首页WEB
springboot用Redis做数据查询缓存

springboot用Redis做数据查询缓存

作者: 我问你瓜保熟吗 | 来源:发表于2019-03-29 17:08 被阅读37次

    一、在pom.xml添加依赖

            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-redis</artifactId>
                <version>2.1.3.RELEASE</version>
            </dependency>
    

    二、创建配置类

    package com.zkjt.xxzx.config;
    
    import com.fasterxml.jackson.annotation.JsonAutoDetect;
    import com.fasterxml.jackson.annotation.PropertyAccessor;
    import com.fasterxml.jackson.databind.ObjectMapper;
    import org.springframework.cache.CacheManager;
    import org.springframework.cache.annotation.CachingConfigurerSupport;
    import org.springframework.cache.annotation.EnableCaching;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.data.redis.cache.RedisCacheConfiguration;
    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 org.springframework.data.redis.serializer.RedisSerializer;
    import org.springframework.data.redis.serializer.StringRedisSerializer;
    
    import java.time.Duration;
    
    
    @Configuration
    @EnableCaching
    public class RedisConfig extends CachingConfigurerSupport {
    
        @Bean
        public CacheManager cacheManager(RedisConnectionFactory factory) {
            RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig()
                    .entryTtl(Duration.ofSeconds(60))
                    .disableCachingNullValues();
    
            return RedisCacheManager.builder(factory)
                    .cacheDefaults(config)
                    .transactionAware()
                    .build();
        }
    
        @Bean
        public RedisTemplate redisTemplate(RedisConnectionFactory factory) {
            StringRedisTemplate template = new StringRedisTemplate(factory);
    
            RedisSerializer keySerializer = new StringRedisSerializer(); // 设置key序列化类,否则key前面会多了一些乱码
            template.setKeySerializer(keySerializer);
            setValueSerializer(template);//设置value序列化
            template.afterPropertiesSet();
            template.setEnableTransactionSupport(true);
            return template;
        }
    
        private void setValueSerializer(StringRedisTemplate template) {
            @SuppressWarnings({"rawtypes", "unchecked"})
            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);
        }
    }
    

    三、在需要执行数据缓存的service层代码哪里加入以下注解,value后的指代表名字

    @Cacheable(value = "selectAllServerInfo")
    

    相关文章

      网友评论

        本文标题:springboot用Redis做数据查询缓存

        本文链接:https://www.haomeiwen.com/subject/zsqrbqtx.html