你如何查看redis存储的lua脚本(用于调试)?

时间:2014-01-23 17:11:52

标签: ruby lua redis

我在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的最佳方法是什么? (我希望有更好的方法吗?)

2 个答案:

答案 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源代码也会在定义脚本的滚动日志中的某处上方显示。