你如何查看存储在 Redis 中的 Lua 脚本(用于调试)?

我在一个redis脚本中(来自ruby“Qless”宝石)有一个错误需要调试:

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库定义的代码? 最好的方法是手动复制每个(30个左右)LUA脚本到redis-cli中,看哪个对应于sha? (我希望有更好的方法?)

点赞
用户159344
用户159344

我最终在宝石包内暂时添加了调试信息到Qless::LuaScript#reload方法:

def reload()
  @sha = @redis.script(:load, script_contents)
  puts @sha
  puts script_contents
  puts '-----'
  @sha
end

这提供了调用时的SHA,在上面定义脚本的滚动日志中,当上述错误出现时,也可以看到LUA源代码。

2014-01-23 17:29:23
用户2759336
用户2759336

这是可能的,但并不容易。

您可以使用AOF

执行CONFIG SET appendonly yes命令,然后通过BGREWRITEAOF压缩AOF,执行您的脚本,并查看AOF文件的内容。您的完整脚本就在其中。

希望能有帮助,TW

2014-08-17 09:09:53