函数负载
语法
FUNCTION LOAD [REPLACE] function-code
- 从以下位置开始可用:
- 7.0.0
- 时间复杂度:
- O(1) (考虑到编译时间是多余的)
- ACL 类别:
-
@write
,@slow
,@scripting
,
将库加载到 Redis。
该命令获取一个强制参数,该参数是实现该库的源代码。
库有效负载必须以 Shebang 语句开头,该语句提供有关库的元数据(如要使用的引擎和库名称)。
社邦格式:#!<engine name> name=<library name>
.当前 engine name 必须为lua
.
对于 Lua 引擎,实现应使用redis.register_function()
应用程序接口.
加载后,您可以使用FCALL
(或FCALL_RO
(如果适用)命令。
尝试加载名称已存在的库时,Redis 服务器将返回错误。
这REPLACE
modifier 更改此行为,并用新内容覆盖现有库。
在以下情况下,该命令将返回错误:
- 提供的 engine-name 无效。
- 库的名称已存在,但没有
REPLACE
修饰语。 - 库中的函数是使用另一个库中已存在的名称创建的(即使
REPLACE
)。 - 引擎在创建库的函数时失败(例如,由于编译错误)。
- 库未声明任何函数。
有关更多信息,请参阅 Redis 函数简介。
例子
以下示例将创建一个名为mylib
使用单个函数myfunc
,这将返回它获取的第一个参数。
redis> FUNCTION LOAD "#!lua name=mylib \n redis.register_function('myfunc', function(keys, args) return args[1] end)"
mylib
redis> FCALL myfunc 0 hello
"hello"