我在redis脚本中遇到错误(来自ruby“Qless”gem)我需要调试:
ruby/gems/1.9.1/gems/redis-3.0.7/lib/redis/client.rb:97:in `call': ERR Error running script (call to f_f7526d197070c9e82c28fad331b4c020585aad20): user_script:33: bad argument #1 to 'decode' (string expected, got boolean) (Redis::CommandError)
如何将f_f7526d197070c9e82c28fad331b4c020585aad20
映射回此Qless库定义的代码?手动复制将Qless中的每个(30个左右)LUA脚本粘贴到redis-cli并查看哪个对应sha的最佳方法是什么? (我希望有更好的方法吗?)
答案 0 :(得分:1)
这是可能的,但不是微不足道的。
您可以使用AOF。
执行CONFIG SET appendonly yes
,按BGREWRITEAOF压缩AOF,执行脚本,然后查看AOF文件的内容。你的完整脚本就在那里。
希望这有帮助,TW
答案 1 :(得分:0)
我最终将调试信息添加到Qless::LuaScript#reload
方法(暂时在gem中):
def reload()
@sha = @redis.script(:load, script_contents)
puts @sha
puts script_contents
puts '-----'
@sha
end
这在调用时提供SHA,因此当显示上面提到的错误时,LUA源代码也会在定义脚本的滚动日志中的某处上方显示。