使用Jedis调用Redis ZADD命令结合ZAddParams时遇错误求助
问题解决:Jedis ZADD 带 ZAddParams 时报错 "ERR bit offset is not a double or out of range"
错误原因
你遇到的问题是方法重载匹配错误。Jedis的zadd方法有多个重载版本,当你把ZAddParams放在score和member之后传入时,Jedis并未匹配到带参数选项的正确重载,反而将ZAddParams实例错误解析为额外的命令参数,导致Redis收到格式错误的命令,进而触发了这个看似不相关的bit操作类报错。
解决方案
调整参数顺序,将ZAddParams放在score和member之前,使用正确的重载方法:
// 正确写法:ZAddParams 作为第二个参数传入 long a = redisClient.zadd("key", ZAddParams.zAddParams().nx(), 2.0, "member1");
如果需要批量添加多个member,也可以使用Map形式的重载:
Map<String, Double> scoreMembers = new HashMap<>(); scoreMembers.put("member1", 2.0); long a = redisClient.zadd("key", ZAddParams.zAddParams().nx(), scoreMembers);
这样调用会让Jedis正确构造带有NX选项的ZADD命令,Redis就能正常解析执行了。
内容的提问来源于stack exchange,提问作者Nitish Joshi
相关产品推荐
相关产品推荐

