Budu v rozporu s přijatou odpovědí, protože přijatá odpověď je špatná.
I když nemůžete explicitně definovat pojmenované funkce, můžete zavolejte libovolný skript, který můžete volat pomocí EVALSHA
. Přesněji řečeno, všechny skripty Lua, které jste explicitně definovali pomocí SCRIPT LOAD
nebo implicitně prostřednictvím EVAL
jsou dostupné v globálním jmenném prostoru Lua na f_<sha1 hash>
(dokud/pokud nezavoláte SCRIPT FLUSH
), na které můžete kdykoli zavolat.
Problém, na který narazíte, je, že funkce jsou definovány tak, že neberou žádné argumenty a KEYS
a ARGV
tabulky jsou ve skutečnosti globální. Takže pokud chcete být schopni komunikovat mezi Lua skripty, musíte buď zkombinovat vaše KEYS
a ARGV
tabulky, nebo musíte pro komunikaci mezi vašimi funkcemi použít standardní klíčový prostor Redis.
To vše řeklo, že je to v naprostém rozporu se specifikací a je zcela možné přestat fungovat podivným způsobem, pokud se to pokusíte spustit ve scénáři clusteru Redis.