FUNCTION LOAD

语法
FUNCTION LOAD [REPLACE] function-code
可用版本
Redis 开源版 7.0.0
时间复杂度
O(1)(忽略编译时间)
ACL 类别
@write, @slow, @scripting,

加载库到 Redis。

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

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

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

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

  • 提供了无效的 引擎名称
  • 库名称已存在,且未使用 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 回复

Bulk string 回复:加载的库名称。
评价本页
返回顶部 ↑