FUNCTION

管理已注册的函数库及其序列化表示。

Lua 与函数 · 示例已验证

本页覆盖的语法

FUNCTION LOAD library-source | FUNCTION LIST | FUNCTION DUMP | FUNCTION RESTORE payload | FUNCTION DELETE library-name | FUNCTION FLUSH

测试列出已加载的库,导出后清空目录,再还原载荷;随后成功调用函数,最后删除其所属库。

实测示例与返回值

下列请求按顺序执行;每个场景使用空数据库。连接先通过测试密码认证。双引号表示字符串,null 表示空回复,数组按 RESP 顺序展示。

# connection: default
> FUNCTION FLUSH
"OK"
# connection: default
> FUNCTION LOAD "#!lua name=manual\nredis.register_function{function_name='read_value', callback=function(keys,args) return redis.call('GET',keys[1]) end, flags={'no-writes'}}"
"manual"
# connection: default
> SET sample value
"OK"
# connection: default
> FUNCTION LIST
[["library_name","manual","engine","LUA","functions",[["name","read_value","description",null,"flags",["no-writes"]]]]]
# connection: default
> FUNCTION DUMP
{"base64":"9UCdIyFsdWEgbmFtZT1tYW51YWwKcmVkaXMucmVnaXN0ZXJfZnVuY3Rpb257ZnVuY3Rpb25fbmFtZT0ncmVhZF92YWx1ZScsIGNhbGxiYWNrPWZ1bmN0aW9uKGtleXMsYXJncykgcmV0dXJuIHJlZGlzLmNhbGwoJ0dFVCcsa2V5c1sxXSkgZW5kLCBmbGFncz17J25vLXdyaXRlcyd9fQsAJws2BkRcHfQ=","bytes":170}
# Capture these exact bytes as libraries.
# connection: default
> FUNCTION FLUSH
"OK"
# connection: default
> FUNCTION RESTORE <captured:libraries>
"OK"
# connection: default
> FCALL read_value 1 sample
"value"
# connection: default
> FUNCTION DELETE manual
"OK"

captured 标记代表前一请求返回的原始字节,不是要直接输入的字符串。二进制回复用 Base64 展示;可执行测试会原样传递字节。