无法识别的选项或错误数量的参数:'--evalsha'

Unrecognized option or bad number of args for: '--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 我得到:

Unrecognized option or bad number of args for: '--evalsha'

这怎么可能?我不需要任何选项或参数。该脚本正在运行(使用调试器对其进行调试),并且在我正常运行时也 运行s --eval 它。

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

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

但是如果你想使用evalsha到运行一个加载的脚本,你需要做的是

redis-cli evalsha a8a6b471abf42b6cc584444e9d269e9807d96ff1 0

请注意,您必须传递 0 以表明您没有向命令传递任何参数。