redis操作报错——WRONGTYPE Operation against a key holding the wrong kind of value

背景介绍

今天在操作redis的时候,突然遇到遇到以下错误
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值
总结

解决完之后,回头再看一下报错信息,简直就是直接告诉原因了啊,多看看报错信息,啥都有了,以后一定要耐下心来看报错信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值