• springboot 整合 Redis 方法二


    方法一请参考之前博文 spring boot 整合 redis

    自己的版本  java8 + redis3.0 + springboot 2.0.0

    1 spring boot已经支持集成 redis,在 mvn 中只需添加依赖即可。pom 配置片段如下

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.0.RELEASE</version>
      </parent>
    
    <!-- 添加 redis 缓存支持 -->
        <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

    1.2 对 redis 进行配置,修改配置文件 application.properties

    ## Redis 配置
    ## Redis数据库索引(默认为0)
    spring.redis.database=0
    ## Redis服务器地址
    spring.redis.host=127.0.0.1
    ## Redis服务器连接端口
    spring.redis.port=6379
    ## Redis服务器连接密码(默认为空)
    spring.redis.password=

    2.1 创建 RedisConfig 配置类

    @Configuration
    public class RedisConfig {
    
        @Bean
        public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory redisConnectionFactory){
            StringRedisTemplate redisTemplate = new StringRedisTemplate(redisConnectionFactory);
            Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
            /**
             * 通用的序列化和反序列化设置
             * ObjectMapper类是Jackson库的主要类。它提供一些功能将转换成Java对象匹配JSON结构,反之亦然。
             */
            ObjectMapper objectMapper = new ObjectMapper();
            objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
            objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
    
            jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
            redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
            redisTemplate.afterPropertiesSet();
            return redisTemplate;
        }
    
    }

    2.2 创建 RedisService 泛型服务方法

    @Service
    public class RedisService <T> {
    
        @Autowired
        private RedisTemplate redisTemplate;
    
        /**
         * 一天有多少分钟,默认时间是一天
         */
        private static final long MINUTES_OF_ONE_DAY = 24 * 60;
    
    
        /**
         * 将 key,value 存放到redis数据库中,默认设置过期时间为一天
         *
         * @param key
         * @param value
         */
        public void set(String key, T value) {
            set(key, value, MINUTES_OF_ONE_DAY);
        }
    
        /**
         * 将 key,value 存放到redis数据库中,设置过期时间单位是分钟
         *
         * @param key
         * @param value
         * @param expireTime 单位是秒
         */
        public void set(String key, T value, long expireTime) {
            ValueOperations<String, T> valueOperations = redisTemplate.opsForValue();
            valueOperations.set(key,value,expireTime,TimeUnit.MINUTES);
        }
    
        /**
         * 判断 key 是否在 redis 数据库中
         *
         * @param key
         * @return
         */
        public boolean exists(final String key) {
            return redisTemplate.hasKey(key);
        }
    
    
    
        /**
         * 获取 key 对应的字符串
         * @param key
         * @return
         */
        public T get(String key) {
            ValueOperations<String, T> valueOperations = redisTemplate.opsForValue();
            return valueOperations.get(key);
        }
    
        /**
         * 获得 key 对应的键值,并更新缓存时间,时间长度为默认值
         * @param key
         * @return
         */
        public T getAndUpdateTime(String key) {
            T result = get(key);
            if (result != null) {
                set(key, result);
            }
            return result;
        }
    
        /**
         * 删除 key 对应的 value
         * @param key
         */
        public void delete(String key) {
            redisTemplate.delete(key);
        }
    
    
    }

    3 接下来就可以使用 RedisService 进行缓存使用了。需要开启Redis服务,并没有设置密码

  • 相关阅读:
    第一周学习总结
    《淘宝网》质量属性分析
    软件架构师如何工作
    MVC模式
    Python学习
    echarts-数据的视觉映射
    热词展示
    热词关系图
    offset、client、scroll三个系列对比,是否有边框 padding?是否有单位?
    元素滚动 scroll系列属性 如果内容溢出盒子、scroll返回的是内容的大小 是否带边框、单位?
  • 原文地址:https://www.cnblogs.com/zhaopengcheng/p/8597079.html
Copyright © 2020-2023  润新知