redis缓存中value为long类型,读出来强转变成了int类型报错
时间: 2023-11-12 15:04:22 浏览: 212
无法从 int? 转换为 int 运行时出现错误
这是因为 long 类型的数据转换为 int 类型时可能会发生溢出,导致数据异常。在 Redis 中,存储的数据类型是字符串类型,因此在读取数据时需要将其转换为目标类型。如果 Redis 中存储的是 long 类型的数据,读取时需要将其转换为 long 类型,然后再进行强制类型转换为 int 类型。可以使用 RedisTemplate 的 opsForValue().get() 方法获取 Redis 缓存中的数据,然后进行类型转换。例如:
```
RedisTemplate<String,Long> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(redisConnectionFactory);
redisTemplate.setDefaultSerializer(new Jackson2JsonRedisSerializer<>(Long.class));
Long value = redisTemplate.opsForValue().get("key");
int intValue = value.intValue();
```
其中,Jackson2JsonRedisSerializer 是 RedisTemplate 内置的序列化器,可以将 Long 类型的数据转换为字符串类型存储在 Redis 中。在读取数据时,需要将字符串类型的数据转换为 Long 类型,然后再进行强制类型转换为 int 类型。
阅读全文