zoukankan      html  css  js  c++  java
  • 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服务,并没有设置密码

  • 相关阅读:
    hdu 3006 The Number of set(思维+壮压DP)
    Mysql-SQL优化-统计某种类型的个数
    canvas.clipPath canvas.clipRect() 无效的原因
    linux下alias命令具体解释
    使用带粒子效果的 CAEmitterLayer
    Wordpress 建站(一)
    一个有趣的问题:ls -l显示的内容中total究竟是什么?
    (转)奇妙的数据挖掘
    android几个高速打包命令
    hdu3336解读KMP算法的next数组
  • 原文地址:https://www.cnblogs.com/zhaopengcheng/p/8597079.html
Copyright © 2011-2022 走看看