有事没事领个红包

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服务,并没有设置密码

 

posted @ 2018-03-18 19:56  crazyCodeLove  阅读(3017)  评论(1编辑  收藏  举报