ФУНКЦИЯ
FUNCTION LOAD
FUNCTION LOAD [REPLACE] function-code
- Доступно с версии:
- 7.0.0
- Сложность вычисления:
- O(1) (учитывая, что время компиляции не является лишним)
- Категории ACL:
-
@write,@slow,@scripting,
Загрузить библиотеку в Redis.
Команда получает единственный обязательный параметр — исходный код, реализующий библиотеку. Загрузка библиотеки должна начинаться со строки Shebang, которая предоставляет метаданные о библиотеке (например, используемый движок и имя библиотеки). Формат Shebang: #!<engine name> name=<library name>. В настоящее время имя движка должно быть lua.
Для движка Lua реализация должна объявлять одну или несколько точек входа в библиотеку с помощью API redis.register_function(). После загрузки вы можете вызывать функции в библиотеке с помощью команды FCALL (или FCALL_RO, если применимо).
При попытке загрузить библиотеку с именем, которое уже существует, сервер Redis возвращает ошибку. Модификатор REPLACE изменяет это поведение и перезаписывает существующую библиотеку новым содержимым.
Команда вернет ошибку в следующих случаях:
- Было предоставлено неверное имя_движка.
- Имя библиотеки уже существует без модификатора
REPLACE. - Функция в библиотеке создана с именем, которое уже существует в другой библиотеке (даже когда указан
REPLACE). - Движок завершился ошибкой при создании функций библиотеки (например, из-за ошибки компиляции).
- Библиотека не объявила ни одной функции.
Для получения дополнительной информации обратитесь к Введению в функции Redis.
Возвращаемое значение
@string — имя загруженной библиотеки
Примеры
Следующий пример создаст библиотеку с именем 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"
© 2006–2022 Salvatore Sanfilippo
Licensed under the Creative Commons Attribution-ShareAlike License 4.0.
https://redis.io/commands/function-load/