背景介绍
今天在操作redis的时候,突然遇到遇到以下错误
原因分析
- 尝试一:刚看到这个错误的时候,我第一意识是redis中没有key或者值,于是查了一下redis,发现是有这组值的。
- 果断查了资料发现,这个是存取的类型不一致导致,参考
案例一:
在存的时候使用的key-value形式存储,二者均为String类型
JedisUtils.set(RedisConst.AIPC_ACC_POINTS_NODE, JsonUtil.formatJson(lastList));
在取的时候,采用其他形式获取,如key-list形式获取(项目中,我的错误就在此)
List<String> list = JedisUtils.getList(RedisConst.AIPC_ACC_POINTS_NODE);
案例二:
在第一次存的时候使用的key-value形式存储,二者均为String类型
JedisUtils.set(RedisConst.AIPC_ACC_POINTS_NODE, JsonUtil.formatJson(lastList));
在第二次存的时候使用的key-list形式存储,key为String,value为list
JedisUtils.set(RedisConst.AIPC_ACC_POINTS_NODE, lastList);
解决方案
- 案例一
- 修改存取代码,使之方式一致。如存:set,取:get。
//存:
JedisUtils.set(RedisConst.AIPC_ACC_POINTS_NODE, JsonUtil.formatJson(lastList));
//取:
String listFirst = JedisUtils.get(RedisConst.AIPC_ACC_POINTS_NODE);
- 案例二
- 直接删除key,重新赋值;即不存在冲突,就不需要去解决冲突(过于粗暴)。
- 找到冲突的原因,修改value值或者改变key值
总结
解决完之后,回头再看一下报错信息,简直就是直接告诉原因了啊,多看看报错信息,啥都有了,以后一定要耐下心来看报错信息。