SpringBoot整合Redis6客户端

一、Redis客户端介绍

分布式缓存Redis客户端有自带客户端 redis-cli、可视化工具、语言客户端:java、python。

在 Java 语言环境中,常用的 Redis 客户端实现有 Jedis 和 Lettuce。这两个库都允许开发者通过 Java 代码高效地操作 Redis 数据库。

在SpringBoot整合Redis很简单,只需要添加依赖 spring-boot-starter-data-redis,并且Springboot2后默认使用Lettuce作为访问redis的客户端。


      org.springframework.boot
      spring-boot-starter-data-redis
  

二、RedisTemplate介绍及配置序列化机制

在SpringBoot项目中操作redis少不了RedisTemplate。

RedisTemplate介绍:

  • ValueOperations:简单K-V操作
  • SetOperations:set类型数据操作
  • ZSetOperations:zset类型数据操作
  • HashOperations:针对map类型的数据操作
  • ListOperations:list类型的数据操作

RedisTemplate和StringRedisTemplate的区别

  • StringRedisTemplate继承RedisTemplate

  • 两者的数据是不共通的(默认的序列化机制导致key不一样)

  • StringRedisTemplate默认采用的是String的序列化策略

  • RedisTemplate默认采用的是JDK的序列化策略,会将数据先序列化成字节数组然后在存入Redis数据库

由于不同的序列化机制导致key不一样,所以我们需要在项目中配置序列化机制。

@Configuration
public class RedisTemplateConfiguration {
​
    /**
     * @param redisConnectionFactory
     * @return
     */
    @Bean
    public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) {
​
        RedisTemplate redisTemplate = new RedisTemplate<>();
        redisTemplate.setConnectionFactory(redisConnectionFactory);
​
        // 使用Jackson2JsonRedisSerialize 替换默认序列化
        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
​
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
​
        // 设置key和value的序列化规则
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
​
        // 设置hashKey和hashValue的序列化规则
        redisTemplate.setHashKeySerializer(new StringRedisSerializer());
        redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
​
        // 设置支持事物
        //redisTemplate.setEnableTransactionSupport(true);
​
        redisTemplate.afterPropertiesSet();
​
        return redisTemplate;
    }
​
}

 

你可能感兴趣的:(redis,redis)