我有一个要在 Redis 中运行的小型 Lua 脚本,我对获取执行时间很感兴趣。
由于 Redis 的性质和它的 Lua 实现,我不能在脚本的开始/返回点使用 TIME 函数,并将此信息包含在返回中以进行处理(请参阅http://redis.io/commands/eval -脚本作为纯函数)。这会导致错误:(error) ERR Error running script (call to f_a49ed2fea72f1f529843d6024d1515e76e69bcbd): Write commands not allowed after non deterministic commands
我已经四处寻找我可以进行的函数/调用,它将返回上次运行脚本的执行时间,但还没有找到任何东西。
我正在使用 PHP 和 Predis 库。虽然我可以从 PHP 端检查执行时间,但我希望消除传输开销并找出 Lua 脚本将阻止对数据库的访问多长时间。如果我不需要更改存储在 Redis 中的任何数据,我已经成功返回了时间,这些时间大约是 PHP 报告时间的 1/10。
如何确定 Redis 中 Lua 脚本的执行时间,而不是通过 PHP?