Spring data redis - Map<String, Long> 的 Hash 被检索为 Map<String, Integer>,如何解决这个问题?

Spring data redis - Hash of Map<String, Long> is retrieved as Map<String, Integer>, how to fix this?

我正在使用 Spring Data Redis 并使用散列操作将 Map 保存为 Redis 中的散列。

假设 hash 是“some hash”,hashkey 是“unique key”,hash value 是“Map”。

 Map<String,Long > data= new HashMap<>());
 data.put("k", 21474836470); //value = Integer.MAX*10

 hashOperations.put("some hash", "unique key", data);

 Map<String,Integer> result = hashOperations.get( "some hash", "unique key");

这里的问题是结果是 Map 而不是 Map

当存储在 Redis 中的 map 中的值大于 Integer.MAX,那么我将在 result map 中得到错误的值。

我可以通过 Redis-CLI 节省 10 倍 Integer.MAX 的价值。似乎 Redis 整数的范围不同于 Java Integer.

通过Redis CLI我可以获得一个很大的整数值,但是在Java上,return类型是Java整数,这对Long值不起作用。

我正在使用 Jackson2JsonRedisSerializer 作为哈希值和值序列化器。

我该如何解决这个问题?

我用大于 Integer.MAX 的值进行了测试,Spring 能够将其转换为 Long 值。

对于小于 Integer.MAX 的值,它正在转换为整数。 对于大于 Integer.MAX 的值,它正在转换为 Long。