FUNCTION LOAD

用法
FUNCTION LOAD [ REPLACE ] function-code
复杂度
O(1) (考虑到编译时间是多余的)
起始版本
7.0.0
ACL 类别
@scripting, @write, @slow

将库加载到 Valkey。

该命令接受一个强制参数,即实现库的源代码。库负载必须以 Shebang 语句开头,该语句提供有关库的元数据(例如要使用的引擎和库名称)。Shebang 格式:#!<engine name> name=<library name>。目前引擎名称必须是 lua

对于 Lua 引擎,实现应使用 server.register_function() API 声明一个或多个库入口点。加载后,您可以使用 FCALL(或在适用时使用 FCALL_RO)命令调用库中的函数。

当尝试加载一个名称已存在的库时,Valkey 服务器会返回错误。REPLACE 修饰符会改变此行为,并用新内容覆盖现有库。

在以下情况下,该命令将返回错误:

  • 提供了无效的 engine-name
  • 在没有 REPLACE 修饰符的情况下,库名称已存在。
  • 库中的某个函数以在另一个库中已存在的名称创建(即使指定了 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 回复

批量字符串回复:已加载的库名称。