redis
Lua Scripting
Поиск…
Вступление
Redis предоставляет несколько механизмов расширения функциональности базы данных. Одним из механизмов является использование серверных LUA-скриптов, которые могут быть выполнены для управления данными. Сценарии Lua могут быть полезны для выполнения дорогостоящих операций или для реализации атомных операций, требующих логики.
Команды для скриптов
Redis предоставляет семь различных операций для работы со скриптами:
- Эвальные операции (EVAL, EVALSHA)
- Операции SCRIPT (DEBUG, EXISTS, FLUSH, KILL, LOAD)
Команда EVAL оценивает сценарий, предоставляемый как строковый аргумент серверу. Скрипты могут получить доступ к указанным клавишам Redis, названным в качестве аргументов команды, и дополнительным строковым параметрам, которые пользователь хочет передать сценарию.
Например, команда:
EVAL "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 key1 key2 first second
вызывает выполнение пользовательского сценария Lua, который просто возвращает предоставленные значения. Вызов включает в себя 2 клавиши Redis (key1 и key2) и два параметра.
Другой способ выполнения сценария Lua - сначала загрузить его в базу данных, а затем выполнить его с помощью SHA-хэша скрипта .:
> script load "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}"
"a42059b356c875f0717db19a51f6aaca9ae659ea"
> evalsha "a42059b356c875f0717db19a51f6aaca9ae659ea" 2 key1 key2 foo bar
1) "key1"
2) "key2"
3) "foo"
4) "bar"
Команда загрузки сценария загружает скрипт и сохраняет его в базе данных. Шага-подпись сценария возвращается, поэтому на нее можно ссылаться будущие вызовы. Функция EVALSHA принимает sha и выполняет соответствующий скрипт из базы данных.