配置redisTemplate自定义序列化,无法反序列化Map的key为Integer

发布于 2022-09-30 23:08:32 字数 1247 浏览 40 评论 0

我的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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

寒尘 2022-10-07 23:08:32

image.png

你这改的是 Value 的序列化器,Key 不就是 String 么。

要么你取出来以后自己在代码层再转换一次(推荐);要么自己写个序列化器改 Key。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文