Я использую Spring Data Redis и использую хеш-операции для сохранения Map‹String, Long› как хеш в Redis.
Предположим, что хеш — это некоторый хеш, хэш-ключ — это уникальный ключ, а хэш-значение — это Map‹String, Long›.
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‹String, Integer› вместо Map‹String, Long›.
Когда значение на карте, хранящейся в Redis, больше, чем Integer.MAX, я получу неправильное значение на карте result.
Я могу сэкономить 10-кратное значение Integer.MAX через Redis-CLI. Кажется, диапазон целого числа Redis отличается от целого числа Java.
Через интерфейс командной строки Redis я могу получить большое значение целого числа, но в Java тип возвращаемого значения — целое число Java, которое не будет работать для длинного значения.
Я использую Jackson2JsonRedisSerializer в качестве сериализатора хеш-значений и значений.
Как это исправить?