Давайте посмотрим, как это работает.
-
Подключитесь к серверу Redis, используя интерфейс командной строки Redis (redis-cli).
redis-cli
-
Теперь давайте загрузим Lua-скрипт с помощью SCRIPT LOAD. Мы будем использовать тот же скрипт из предыдущего шага, который увеличивает счетчик на указанную величину.
SCRIPT LOAD "local current = redis.call('INCRBY', KEYS[1], ARGV[1]); return current"
Эта команда загрузит скрипт в кеш скриптов сервера Redis и вернет SHA1-хеш скрипта. Вы должны увидеть вывод, подобный этому:
"6b1e8dd2999cb08546e74339c0c9489f9f89a84b"
Это SHA1-хеш скрипта. Запишите этот хеш, так как он понадобится вам на следующем шаге. Точное значение хеша может отличаться.
-
Теперь давайте загрузим скрипт, который устанавливает ключ в значение, где и ключ, и значение передаются в качестве аргументов.
SCRIPT LOAD "redis.call('SET', KEYS[1], ARGV[1]); return ARGV[1]"
Вы должны увидеть вывод, подобный этому:
"a8b2b3648969459a8198262a9166e945e890987c"
Опять же, запишите этот хеш.
-
Давайте загрузим скрипт, который объединяет две строки, переданные в качестве аргументов, и устанавливает результат в ключ.
SCRIPT LOAD "local result = ARGV[1] .. ARGV[2]; redis.call('SET', KEYS[1], result); return result"
Вы должны увидеть вывод, подобный этому:
"d2a800a974ca96849295220424f9a0664a495345"
Запишите и этот хеш.
-
Вы можете проверить, загружены ли скрипты, с помощью команды SCRIPT EXISTS. Эта команда принимает один или несколько SHA1-хешей в качестве аргументов и возвращает массив из 0 и 1, где 1 указывает, что скрипт с соответствующим хешем загружен, а 0 указывает, что он не загружен.
Например, чтобы проверить, загружен ли первый скрипт, который мы загрузили, используйте следующую команду, заменив хеш на тот, который вы получили на шаге 2:
SCRIPT EXISTS 6b1e8dd2999cb08546e74339c0c9489f9f89a84b
Вывод:
1) (integer) 1
Это указывает на то, что скрипт загружен.
Если вы попытаетесь проверить скрипт, который не загружен:
SCRIPT EXISTS 0000000000000000000000000000000000000000
Вывод:
1) (integer) 0
Это указывает на то, что скрипт не загружен.
-
Выйдите из redis-cli. Это важно для регистрации изменений.
exit