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

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

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

举例:

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. python记录_day33 线程

    ##进程就像加工厂,线程是里边的流水线##进程是资源单位,线程是运行单位,每个进程至少有一个线程 即进程是资源分配的最小单位,线程是CPU调度的最小单位 一.线程的创建两种方式,和进程类似1.t = ...

  2. sublime 3的破解和安装

    http://www.xue51.com/mac/1518.html 啥都别问,问就是按照上面的网址操作就行,本人亲测可用.

  3. mysql使用sql语句根据经纬度计算距离排序

    CREATE TABLE `locationpoint` ( `id` int(11) NOT NULL, `province` varchar(20) NOT NULL, `city` varcha ...

  4. spring boot 之如何在两个页面之间传递值(转)

    原文地址:spring boot 之如何在两个页面之间传递值 问题:页面之间的跳转,通常带有值的传输,但是,在现在比较流行的SPRING MVC WEB 开发模型中,设计机制导致页面之间的直接接跳转和 ...

  5. 思科恶意加密TLS流检测论文记录——由于样本不均衡,其实做得并不好,神马99.9的准确率都是浮云啊,之所以思科使用DNS和http一个重要假设是DGA和HTTP C&C(正常http会有图片等)。一开始思科使用的逻辑回归,后面17年文章是随机森林。

    论文记录:Identifying Encrypted Malware Traffic with Contextual Flow Data from:https://songcoming.github. ...

  6. Nginx反向代理配置教程(php-fpm)

    1.安装nginx http://www.cnblogs.com/lsdb/p/6543441.html 2.安装php-fpm yum install -y php-fpm 3.配置Nginx反向代 ...

  7. jQuery获取select值

    jQuery操作select标签 即控制select的option属性 <select id="sid" > <option value="-1&quo ...

  8. js之添加浏览器历史记录

    如何生成一条历史记录 简单粗暴的方法,直接在当前页面的地址栏中输入地址 点击页面中有a标签的href 执行location.href = ‘xxx’(location.replace(‘xxx’)生成 ...

  9. coursera国际法笔记 持续更新

    LECTURE ONE International crime court(ICC) came into being after the Second World War. The Nuremberg ...

  10. Java Web(八) 事务,安全问题及隔离级别

    事务 什么是事务? 事务就是一组原子性的SQL查询,或者说是一个独立的工作单元. 事务的作用 事务在我们平常的CRUD(增删改查)操作当中也许不太常用, 但是如果我们有一种需求,一组操作中必须全部成功 ...