错误:ERR值不是整数或超出LUA脚本中redis.call('zcard','myzset')的范围

时间:2014-03-11 01:03:15

标签: node.js lua redis

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

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

return cjson.encode(stats)

这将返回错误:

Error: ERR value is not an integer or out of range

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

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:5)

你的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