RedisTemplate的默认序列化方式及改进【一】
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>