`--evalsha` 未识别的选项或错误的参数数量

当我运行以下脚本的命令时 redis-cli script load "$(cat ./scripts/restoreSymbols.lua)"

local list = {}
local result = redis.call('scan', 0, 'MATCH', 'symbol:*', 'COUNT', 1000)
for _, v in ipairs(result[2]) do
    list[#list+1] = redis.call('hgetall', v)
end
return list

我得到了一个 sha a8a6b471abf42b6cc584444e9d269e9807d96ff1 但是当我运行 redis-cli --evalsha a8a6b471abf42b6cc584444e9d269e9807d96ff1 时,我得到了以下错误信息:

`--evalsha` 未识别的选项或错误的参数数量

为什么会这样呢?我不需要任何选项或参数。这个脚本是正常工作的(我用调试器调试了它),使用 --eval 命令也可以运行。

点赞
用户2759075
用户2759075

--evalsha 标志不是有效的 redis-cli 选项。你可以使用 --eval 来运行你的脚本,例如:

redis-cli --eval ./scripts/restoreSymbols.lua

但是如果要使用 evalsha 来运行已加载的脚本,你需要做的是:

redis-cli evalsha a8a6b471abf42b6cc584444e9d269e9807d96ff1 0

请注意,您必须传递 0 来指示您不会向命令传递任何参数。

2020-01-01 14:31:56