RedisTemplate的默认序列化方式及改进【一】

作者: zhl 分类: Redis 发布时间: 2024-01-22 00:22
public class SpringDataRedisStringTemplateTests{
    @Autowired
    private RedisTemplate redisTemplate;
    @Test
    void testString() {
        redisTemplate.opsForValue().set("name","虎哥");
        Object name = redisTemplate.opsForValue().get("name");
        System.out.println("name = " + name);
    }
}





SpringDataRedis 默认序列化的方式是 JdkSerializationRedisSerializer
缺点:

  • 可读性差
  • 内存占用较大

改进

我们可以自定义 RedisTemplate 的序列化方式,且引入 jackon 依赖

@Configuration
public class RedisConfig {
    @Bean
    public RedisTemplate<String,Object> redisTemplate(RedisConnectionFactory connectionFactory){
        RedisTemplate<String, Object> template = new RedisTemplate<>();
        //设置连接工厂
        template.setConnectionFactory(connectionFactory);

        //设置JSON的序列化工具
        GenericJackson2JsonRedisSerializer jsonRedisSerializer = new GenericJackson2JsonRedisSerializer();

        //设置key的序列化方式为 StringRedisSerializer
        template.setKeySerializer(RedisSerializer.string());
        template.setHashKeySerializer(RedisSerializer.string());

        //设置value的序列化方式为 GenericJackson2JsonRedisSerializer
        template.setValueSerializer(jsonRedisSerializer);
        template.setHashValueSerializer(jsonRedisSerializer);

        return template;
    }
}
<!--SpringBoot2.x引入的Jackson依赖-->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
</dependency>
<!--SpringBoot3.x引入的Jackson依赖-->
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-json</artifactId>
   <version>3.1.0</version>
</dependency>

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注