Redis FUNCTION LIST查看已注册的函数库信息
FUNCTION LIST 命令用于列出当前 Redis 数据库中所有已加载的函数库及其详细信息。这在管理脚本、排查函数调用问题或查看当前服务器加载了哪些脚本逻辑时非常实用。
准备工作
确保使用的 Redis 版本为 7.0 或更高版本,因为 FUNCTION 相关命令是在该版本引入的。
启动 Redis 命令行工具:
redis-cli
基本用法:查看所有函数库
在不带任何参数的情况下执行命令,将返回所有已加载库的列表。
输入以下命令:
FUNCTION LIST
观察返回结果。返回值是一个数组,每个元素代表一个函数库。如果没有任何库加载,返回空数组。
返回数据主要包含以下字段:
| 字段名 | 含义说明 |
|---|---|
name |
函数库的名称,加载时由用户指定。 |
engine |
执行引擎,通常为 LUA。 |
functions |
该库中包含的所有函数列表。 |
library_code |
函数库的原始代码(默认不显示)。 |
实战演练:加载并查看函数库
为了更直观地理解,我们将创建一个包含简单计算逻辑的函数库,并使用 FUNCTION LIST 进行查看。
1. 加载一个测试库
执行 FUNCTION LOAD 命令创建一个名为 my_math_lib 的库,其中包含一个 add 函数:
FUNCTION LOAD REPLACE my_math_lib "#!lua name=my_math_lib \n redis.register_function('add', function(keys, args) return tonumber(args[1]) + tonumber(args[2]) end)"
2. 查看已注册的库
再次执行列表命令:
FUNCTION LIST
此时返回的 JSON 格式数据(在 redis-cli --raw 模式下为纯文本)结构如下:
[
{
"name": "my_math_lib",
"engine": "LUA",
"functions": [
{
"name": "add",
"description": null,
"flags": [
"no-writes"
]
}
]
}
]
分析上述结果:
name显示库名为my_math_lib。functions数组中列出了add函数。flags显示no-writes,表明该函数是只读的。
进阶用法:使用参数筛选与查看代码
默认情况下,为了节省网络带宽,Redis 不会返回函数库的源代码。如果需要查看代码详情或筛选特定的库,需要使用参数。
1. 查看库源代码 (WITHCODE)
执行带有 WITHCODE 选项的命令:
FUNCTION LIST WITHCODE
检查返回结果中的 library_code 字段,此时字段内容将包含加载时的完整 Lua 脚本字符串:
[
{
"name": "my_math_lib",
"engine": "LUA",
"functions": [...],
"library_code": "#!lua name=my_math_lib \n redis.register_function('add', function(keys, args) return tonumber(args[1]) + tonumber(args[2]) end)"
}
]
2. 筛选特定库 (LIBRARYNAME)
当服务器上存在多个函数库时,可以通过指定库名来过滤结果。
执行命令,仅查找 my_math_lib:
FUNCTION LIST LIBRARYNAME my_math_lib
如果库名存在,仅返回该库的信息;如果不存在,返回空数组。
清理环境
完成测试后,删除刚才创建的库以保持环境整洁:
FUNCTION DELETE my_math_lib
验证删除结果:
FUNCTION LIST
确认返回结果为空数组,表示库已被成功移除。

暂无评论,快来抢沙发吧!