StringRedisTemplate操作Hash时Integer转换异常问题
在使用 SpringBoot 整合 Redis 操作 Hash 时,
出现了 Integer 转 String 异常问题,
@Bean
public RedisTemplate<?, ?> getRedisTemplate() {
RedisTemplate<?, ?> template = new StringRedisTemplate(getConnectionFactory());
/**
* 使用Jackson2JsonRedisSerialize 替换默认序列化
*/
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
/**
* 设置value的序列化规则和 key的序列化规则
*/
template.setValueSerializer(jackson2JsonRedisSerializer);
template.setKeySerializer(new StringRedisSerializer());
/*
* 加入有关 HashValue的序列化配置
*/
template.setHashValueSerializer(jackson2JsonRedisSerializer);
template.afterPropertiesSet();
return template;
}
在RedisTemplate配置中加入
template.setHashValueSerializer(jackson2JsonRedisSerializer);
即可解决问题.