- 用法
-
FUNCTION LOAD [ REPLACE ] function-code
- 复杂度
- O(1) (考虑到编译时间是多余的)
- 起始版本
- 7.0.0
- ACL 类别
- @scripting, @write, @slow
- 提供了无效的 engine-name。
- 在没有
REPLACE
修饰符的情况下,库名称已存在。 - 库中的某个函数以在另一个库中已存在的名称创建(即使指定了
REPLACE
)。 - 引擎创建库函数失败(例如,由于编译错误)。
- 库中没有声明任何函数。
将库加载到 Valkey。
该命令接受一个强制参数,即实现库的源代码。库负载必须以 Shebang 语句开头,该语句提供有关库的元数据(例如要使用的引擎和库名称)。Shebang 格式:#!<engine name> name=<library name>
。目前引擎名称必须是 lua
。
对于 Lua 引擎,实现应使用 server.register_function()
API 声明一个或多个库入口点。加载后,您可以使用 FCALL
(或在适用时使用 FCALL_RO
)命令调用库中的函数。
当尝试加载一个名称已存在的库时,Valkey 服务器会返回错误。REPLACE
修饰符会改变此行为,并用新内容覆盖现有库。
在以下情况下,该命令将返回错误:
欲了解更多信息,请参阅 Valkey 函数介绍。
示例
以下示例将创建一个名为 mylib
的库,其中包含一个单独的函数 myfunc
,该函数返回其获得的第一个参数。
127.0.0.1:6379> FUNCTION LOAD "#!lua name=mylib \n server.register_function('myfunc', function(keys, args) return args[1] end)"
mylib
127.0.0.1:6379> FCALL myfunc 0 hello
"hello"
RESP2/RESP3 回复
批量字符串回复:已加载的库名称。