配置redisTemplate自定义序列化,无法反序列化Map的key为Integer
我的spring boot是
这是我的配置:
@Bean
public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate redisTemplate = new RedisTemplate();
redisTemplate.setConnectionFactory(redisConnectionFactory);
Jackson2JsonRedisSerializer jsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
objectMapper.registerModule(new JodaModule());
jsonRedisSerializer.setObjectMapper(objectMapper);
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(jsonRedisSerializer);
redisTemplate.setHashKeySerializer(new StringRedisSerializer());
redisTemplate.setHashValueSerializer(jsonRedisSerializer);
return redisTemplate;
}
无论我使用上面的配置,还是改为
redisTemplate.setHashKeySerializer(jsonRedisSerializer);
在我存value为Map<Integer, Object>类型数据到redis时,再从redis取出来就变成Map<String, Object>类型
如果你见过这个问题,或者有什么办法解决,请告诉我,谢谢!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你这改的是 Value 的序列化器,Key 不就是 String 么。
要么你取出来以后自己在代码层再转换一次(推荐);要么自己写个序列化器改 Key。