EVAL/EVALSHA выполняют Lua на сервере атомарно относительно других команд: читают/пишут ключи без гонок клиента, уменьшают RTT сложных операций.
Разбор
- Скрипт должен объявлять ключи корректно (для Cluster — один slot).
EVALSHA + SCRIPT LOAD кэширует байткод.
- Долгий скрипт блокирует однопоточный цикл — держите короткими.
- Lua заменяет WATCH-циклы для многих CAS-паттернов.
Пример
EVAL "redis.call('SET', KEYS[1], ARGV[1])" 1 mykey val
Итог
Lua — серверная атомарная процедура с минимальным RTT.