*Redis FUNCTION STATS 命令

FUNCTION STATS 用于返回当前正在执行的函数的状态和统计信息。


*语法

FUNCTION STATS

*参数说明

无参数。


*返回值

  • Array:当前运行的函数信息,包括运行中的命令和引擎统计

*时间复杂度

O(1)

*

*示例

*没有函数在执行时

> FUNCTION STATS
1) 1) "running_script"
   2) (nil)
   3) "engines"
   4) 1) 1) "LUA"
         2) 1) "libraries_count"
            2) (integer) 1
            3) "functions_count"
            4) (integer) 2

*有函数在执行时

> FUNCTION STATS
1) 1) "running_script"
   2) 1) 1) "name"
         2) "myfunc"
         3) "command"
         4) "FCALL"
         5) "started_at"
         6) (integer) 1717500000000
   3) "engines"
   4) 1) 1) "LUA"
         2) 1) "libraries_count"
            2) (integer) 1
            3) "functions_count"
            4) (integer) 2

*常见错误

无常见错误。


*最佳实践

  • 场景:监控函数执行、排查长时间运行的函数、性能分析
  • 建议配合 FUNCTION KILL 终止异常函数
  • 可以通过轮询 FUNCTION STATS 实现函数执行的监控告警
  • 注意:返回的 started_at 是毫秒级 Unix 时间戳

*FAQ

Q1: FUNCTION STATS 返回哪些信息? A: 返回两部分:running_script(当前运行的函数名、命令、开始时间)和 engines(各引擎的库数量和函数数量)。

Q2: 如何计算函数运行了多久? A: 用当前时间减去 started_at 字段的值(毫秒级时间戳)。

Q3: 可以同时运行多个函数吗? A: Redis 是单线程的,同一时刻只能执行一个函数。running_script 最多只有一个条目。