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服務,並沒有設置密碼

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM