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

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

return cjson.encode(stats)
这将返回错误:

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

最佳答案

您的Lua脚本工作正常。扔掉分号,这是Lua;)。

测试:

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

结果:
"{\"orders\":10424}"

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

希望这会有所帮助,TW

关于node.js - 错误:ERR值不是整数,也不是redis的范围。在LUA脚本中调用('zcard' ,'myzset'),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22314460/

10-12 23:15