【发布时间】:2021-08-04 06:42:04
【问题描述】:
我正在使用 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 上,返回类型是 Java 整数,对于 Long 值不起作用。
我使用 Jackson2JsonRedisSerializer 作为哈希值和值序列化器。
我该如何解决这个问题?
【问题讨论】:
标签: java spring spring-boot redis spring-data-redis