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

use*_*480 1 lua redis node.js

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

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

return cjson.encode(stats)
Run Code Online (Sandbox Code Playgroud)

这会返回错误:

Error: ERR value is not an integer or out of range
Run Code Online (Sandbox Code Playgroud)

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

任何帮助,将不胜感激.

Tw *_*ert 5

你的Lua脚本运行正常.丢掉分号,这是Lua;).

测试:

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

结果:

"{\"orders\":10424}"
Run Code Online (Sandbox Code Playgroud)

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

希望这有帮助,TW