有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java绝地武士团结果不等于redis llen

我遇到了一个关于Redis及其Java客户机Jedis的非常奇怪的问题。我在Redis中有两个名为workMQbackupMQ的列表,当我在Redis cli中执行llen workMQ时,它返回16。然而,当我在Java代码中用Jedis执行jedis.llen("workMQ")时,它返回0。但是,当Java代码中运行jedis.lpush("workMQ", "data")时,新数据会变成llen workMQ。为什么jedis.llen("workMQ")无法识别此列表中剩余的16数据项

在这个奇怪的问题发生之前,我对Lua脚本进行了如下操作

eval "for i = 1, 10 do\r redis.call('rpoplpush', 'backupMQ', 'workMQ')\r end" 0

实际上这个Lua脚本有一些错误,正确的是

eval "for i = 1, 10 do\r redis.call('rpoplpush', KEYS[1], KEYS[2])\r end" 2 backupMQ workMQ

也许Redis和Lua之间存在某种类型错误。我已经执行了这两个Lua脚本,但仍然无法工作

注:我的绝地客户的版本是2.7.2,绝地Github的最新稳定版本

谢谢你抽出时间

解决:一晚后,Redis服务器神奇地识别出workMQ的项目长度,一切正常。真奇怪


共 (1) 个答案

  1. # 1 楼答案

    1. 这种奇怪的事情不可能发生。你一定是搞错了。例如,redis cli可以接受“llen(workMQ)”之类的命令?还是你说的是“艾伦·沃克”

      我认为你很可能是在使用绝地武士在不同于redis cli的列表键上操作

    2. lua问题很简单,你应该在lua脚本的末尾返回一个值(根据你的意愿)。如果仍然不起作用,请为我发布详细的错误信息