gpt4 book ai didi

time - 如何确定Redis中Lua脚本的执行时间?

转载 作者:IT王子 更新时间:2023-10-29 06:03:27 60 4
gpt4 key购买 nike

我有一个小的 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。

如何确定 Lua 脚本在 Redis 中的执行时间,而不是通过 PHP?

最佳答案

您可以通过将 slowlog-log-slower-than 参数更改为 0 来激活 Redis 慢日志功能。它将记录所有命令的执行时间(包括 Lua 脚本,以及任何执行时间)。

慢速日志保存在内存队列中,您必须定期转储以收集数据。根据流量的大小,您可能必须增加 slowlog-max-len 以确保捕捉到您感兴趣的执行时间。

您可以使用 slowlog get command转储慢日志。由您决定过滤掉不需要的结果。 AFAIK,无法在数据收集时进行过滤(仅保留 Lua 统计信息)。

关于time - 如何确定Redis中Lua脚本的执行时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13231698/

60 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com