【问题标题】:Error: ERR value is not an integer or out of range from redis.call('zcard','myzset') in LUA script错误:ERR 值不是整数或超出 LUA 脚本中 redis.call('zcard','myzset') 的范围
【发布时间】:2014-04-14 09:35:54
【问题描述】:

我在从 node.js 运行的 lua 脚本中有这段代码。

local stats = {};
stats['orders'] = redis.call('zcard','jobs');

return cjson.encode(stats)

这会返回错误:

错误:ERR 值不是整数或超出范围

但是,当我从 CLI 运行 zcard jobs 时,会返回一个整数。

【问题讨论】:

  • 旁注在 Lua 中不需要分号
  • 谢谢,问题在于我如何调用 lua 脚本 :)

标签: node.js lua redis


【解决方案1】:

您的 Lua 脚本运行良好。扔掉分号,它是 Lua ;) .

测试:

redis-cli -p 14130 eval "local stats = {} \
stats['orders'] = redis.call('zcard','azbp.d') \
return cjson.encode(stats)" 0

结果:

"{\"orders\":10424}"

我的猜测是,您的客户端调用无效。所以传递给EVALEVALSHA 的第一个参数应该是参数的数量。在此示例中,您必须传递 0。当然只是猜测。

希望这有帮助,TW

【讨论】:

  • 不客气。请接受答案,这样它就不会出现在其他人查看的“未回答”列表中。
  • @user3244480,对不起,如果这听起来很迂腐,但我猜你是 SO 新手。我还猜想您赞成答案,而不是接受答案作为“答案”。顺便说一句,我不是在钓鱼,您也可以发布自己的答案,并接受该答案作为答案。如果我猜错了,请忽略此评论。
猜你喜欢
  • 2019-03-29
  • 1970-01-01
  • 2021-08-29
  • 2018-05-31
  • 1970-01-01
  • 2017-06-26
  • 2022-11-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多