Redis — это бесплатная размещаемая в памяти база данных с открытым исходным кодом, широко используемая в качестве механизма кэширования или брокера сообщений.
Хотя по умолчанию он очень универсален и обширен, он позволяет расширять функциональные возможности с помощью встроенного интерпретатора Lua. Это означает, что вы можете писать сценарии на Lua для выполнения дополнительных операций с вашей базой данных Redis.
Чтобы лучше следовать этой статьи, мы рекомендуем установить в вашей системе последнюю версию сервера Redis.
Базовые знания Redis полезны для понимания команд, показанных в этой статье.
Чтобы запускать команды Lua в Redis, вам нужно использовать команду EVAL. Команда указывает Redis выполнять код как сценарий Lua на стороне сервера.
Пример показан ниже:
127.0.0.1:6379> EVAL "redis.call('SET', KEYS[1], ARGV[1])" 1 key value
В приведенном выше примере мы начинаем с команды EVAL, за которой следует сценарий Lua. Скрипт использует функцию redis.call. Затем мы передаем команду для запуска, ключ и значение в качестве аргументов. Это похоже на запуск значений ключа SET.
Обратите внимание, что KEYS и ARGV обозначают аргументы скрипта. В этом случае мы указываем количество ключей как 1.
Разбор аргументов выполняется через ARGV, который содержит таблицу аргументов. В нашем случае мы передаем значение ключа.
Затем мы можем получить доступ к ключам, начиная с индекса 1.
Мы можем получить значение ключа с помощью команды get:
127.0.0.1:6379> EVAL "redis.call('GET', KEYS[1])" 1 key
Это должно вернуть значение указанного ключа.
Redis также предоставляет вам команду EVALSHA для вызова команды на основе ее хеш-значения.
Это устраняет необходимость перепечатывать сценарий каждый раз, когда он вам нужен.
Пример:
SCRIPT LOAD "return redis.call('get', KEYS[1])"
Приведенная выше команда должна возвращать значение SHA как:
"4e6d8fc8bb01276962cce5371fa795a7763657ae"
Затем вы можете использовать это значение sha для вызова команды.
127.0.0.1:6379> EVALSHA 4e6d8fc8bb01276962cce5371fa795a7763657ae 1 key "value"
Чтобы удалить все загруженные скрипты, выполните команду:
127.0.0.1:6379> SCRIPT FLUSH OK
Приведенная выше команда должна очистить кеш скрипта.
В этой статье описываются самые основные команды, которые можно использовать при работе со сценариями LUA в Redis. Ознакомьтесь с документацией по Lua, чтобы узнать больше.