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。
我正在使用 Spring Data Redis 并使用散列操作将 Map
假设 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
当存储在 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。