看别人写的代码是件比较痛苦的事情,更加痛苦的是别人的代码出错还要负责调试好。

关于如何迅速定位问题和调试代码,我的一点感受是:逐行认真查看错误信息,在这些信息中找自己熟悉的内容(包括文件名、方法名等),不熟悉的内容先跳过。针对这些熟悉的内容,回溯相应的代码所在行,定位错误原因。

切忌囫囵吞枣的看了一通,其实什么有效信息也没有获得,也几乎不可能就这样定位到问题。

举例:

1、定位问题

在使用jedis监听和订阅消息时报以下错误。经逐行查看错误信息,定位到斜体的三行:分析错误原因是mget调用出错,且错误代码在OnlineFriend文件的112/257行。

redis.clients.jedis.exceptions.JedisDataException: ERR wrong number of arguments for 'mget' command   
at redis.clients.jedis.Protocol.processError(Protocol.java:59)    at redis.clients.jedis.Protocol.process(Protocol.java:66)   
at redis.clients.jedis.Protocol.read(Protocol.java:131)   
at redis.clients.jedis.Connection.getIntegerReply(Connection.java:188)   
at redis.clients.jedis.Jedis.mget(Jedis.java:873)   
at  com.caffinc.OnlineFriend$MsgListener.onMessage(OnlineFriend.java:112)   
at  com.caffinc.OnlineFriend.main(OnlineFriend.java:257)

出错代码如下:List topRoles = jedis.srandmember(top_set_key, 10);
List topLevels = jedis.mget(topRoles.toArray(new String[0]));

2、检查问题

根据以上代码,分析可能原因是jedis.mget(key)方法没有获取到key值,即key为空。

直接在redis-cli中运行> srandmember top_set_key,发现top_set_key集合为空,并由此导致mget方法参数缺失。

3、问题处理

导入相应数据到redis top_set_key集合,重新运行代码后一切正常。

总结下,有两点收获:一是调试代码要逐行认真看错误信息,不可囫囵吞枣;二是具体到技术点,mget如果参数为空,会导致ERR wrong number of arguments for 'mget' 错误。

[Jedis] ERR wrong number of arguments for 'mget'的更多相关文章

  1. redis cluster 的ERR max number of clients reached 问题排查

    早上发现微服务连不上redis cluster了,看来下日志如下 [root@win-jrh378d7scu 7005]# bin/redis-cli -c -h 15.31.213.183 -p 7 ...

  2. wrong number of arguments,java方法反射时数组参数的坑

    java方法中只有一个参数是数组,反射的时候我们不能想当然的传歌数组进去,传数组进去的时候表示多个参数. 两个数组不是一个意思啊. 我们应该把数组转为objet,这样才表示一个参数. import j ...

  3. Error Code: 1318. Incorrect number of arguments for PROCEDURE company.new_procedure; expected 2, got

    1.错误叙述性说明 20:27:34 call new_procedure(20150112) Error Code: 1318. Incorrect number of arguments for ...

  4. Error Code: 1318. Incorrect number of arguments for PROCEDURE student.new_procedure; expected 0, got

    1.错误描述 13:58:20 call new_procedure('2000','zhangsan') Error Code: 1318. Incorrect number of argument ...

  5. Variable number of arguments (Varargs)

    A parameter of a function (normally the last one) may be marked with vararg modifier: fun <T> ...

  6. hbase ERROR: wrong number of arguments (3 for 4)

    hbase(main):036:0> get 'ddl', 'example', 'info:age'COLUMN                                         ...

  7. 反射报错java.lang.IllegalArgumentException: wrong number of arguments

    class Person{ private String name ; private String sex ; public Person(){ System.out.println("c ...

  8. [nginx]invalid number of arguments

    invalid number of arguments nginx出现以下的错误,基本上错误的原因就是少了后面的分号导致. invalid number of arguments

  9. Lua 变长参数(variable number of arguments)

    lua变长参数 function add ( ... ) for i, v in ipairs{...} do print(i, ' ', v) end end add(1, 2, 'sdf') lu ...

随机推荐

  1. 第一阶段——站立会议总结DAY01

    1.昨天做了什么:无 2.今天准备做什么:准备开始做个人中心界面,首先是创建页面 3.遇到的困难:“无从下手”,怕写完某个界面之后就会找不到相关的名字接口什么的.

  2. hdu-6397-容斥

    Character Encoding Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Oth ...

  3. Beta阶段——第2篇 Scrum 冲刺博客

    Beta阶段--第2篇 Scrum 冲刺博客 标签:软件工程 一.站立式会议照片 二.每个人的工作 (有work item 的ID) 昨日已完成的工作 人员 工作 林羽晴 完成https安全连接的问题 ...

  4. python_数据类型

    数据类型 1.数字类型 整型(Int) - 通常被称为是整型或整数,是正或负整数,不带小数点.Python3 整型是没有限制大小的,可以当作 Long 类型使用,所以 Python3 没有 Pytho ...

  5. 数据结构与算法之PHP查找算法(哈希查找)

    一.哈希查找的定义 提起哈希,我第一印象就是PHP里的关联数组,它是由一组key/value的键值对组成的集合,应用了散列技术. 哈希表的定义如下: 哈希表(Hash table,也叫散列表),是根据 ...

  6. mysqldump导出报错"mysqldump: Error 2013: Lost connection to MySQL server during query when dumping table `file_storage` at row: 29"

    今天mysql备份的crontab自动运行的时候,出现了报警,报警内容如下 mysqldump: Error 2013: Lost connection to MySQL server during ...

  7. 一、SQL应用(工作中遇到的根据表的某列的值不同,采用的不同列关联表)

    一.工作总结: 今天工作中遇到了这样一个需求,具体是根据某张表的某一列值得不同,进行不同关联操作.起初自己的想法是采用UNION操作,把两种情况连接起来,但是会出现一个问题,当进行动态传值SQL拼接的 ...

  8. vuex状态持久化

    npm install vuex-persistedstate 在store.js里 import createPersistedState from 'vuex-persistedstate' co ...

  9. ScheduledThreadPoolExecutor

    java提供了方便的定时器功能,代码示例: public class ScheduledThreadPool_Test { static class Command implements Runnab ...

  10. zabbix安装教程

    1.下 载 https://www.zabbix.com/download 往下拉选择到源码版本下载 2.创建zabbix用户 zabbix需要以非root用户运行:如果以root用户运行那么他将会自 ...