函数负载

语法
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 服务器将返回错误。 这REPLACEmodifier 更改此行为,并用新内容覆盖现有库。

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

  • 提供的 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"

RESP2/RESP3 回复

批量字符串回复:已加载的库名称。
为本页评分
返回顶部 ↑