redis存入long类型的踩坑
常规思路:package com.macro.mall.controller;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.redis.core.RedisTemplate;public class TestRedis2 {@Autowiredprivate
·
常规思路:
package com.macro.mall.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
public class TestRedis2 {
@Autowired
private RedisTemplate redisTemplate;
public void test(){
long l = System.currentTimeMillis();
String redisTestLongKey = "test-long-key";
redisTemplate.opsForValue().set(redisTestLongKey,l);
long o = (long) redisTemplate.opsForValue().get(redisTestLongKey);
System.out.println(o);
}
}
运行之后报错:Integer 不能转化为Long。
优化思路:
package com.macro.mall.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
public class TestRedis2 {
@Autowired
private RedisTemplate redisTemplate;
public void test(){
long l = System.currentTimeMillis();
String redisTestLongKey = "test-long-key";
redisTemplate.opsForValue().set(redisTestLongKey,l);
Object obj = redisTemplate.opsForValue().get(redisTestLongKey);
Long result = null;
if (obj instanceof Integer){
result = ((Integer)obj).longValue();
}else {
result = (Long) obj;
}
System.out.println(result);
}
}
总结:reids在存入long类型时,会转为int类型,导致在从reids中取值时int转long类型报错。
因此在取值时,做下类型特殊转换即可。
更多推荐
已为社区贡献3条内容
所有评论(0)