我有一个小的Lua脚本要在Redis中运行,我想知道执行时间。
由于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?
os.clock()
,但是返回了一个错误,指出“脚本尝试访问不存在的全局变量 'os'”。看起来这个变量不可用。无论如何,谢谢! - Pete C