当我为以下脚本运行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'
这怎么可能?我不需要任何选项或参数。该脚本正在运行(使用调试器对其进行调试),并且在我正常--eval时也可以运行。
最佳答案
--evalsha
标志不是有效的redis-cli
选项。您可以使用--eval
运行脚本,例如
redis-cli --eval ./scripts/restoreSymbols.lua
但是,如果您想使用
evalsha
运行已加载的脚本,则需要做的是redis-cli evalsha a8a6b471abf42b6cc584444e9d269e9807d96ff1 0
注意,您必须传递
0
来指示您没有将任何参数传递给命令。
关于redis - 无法识别的选项或args的参数数量错误: '--evalsha',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59552721/