Jeg vil være i modstrid med det accepterede svar, fordi det accepterede svar er forkert.
Selvom du ikke eksplicit kan definere navngivne funktioner, kan du kan kald ethvert script, som du kan kalde med EVALSHA
. Mere specifikt, alle de Lua-scripts, som du eksplicit har defineret via SCRIPT LOAD
eller implicit via EVAL
er tilgængelige i det globale Lua-navneområde på f_<sha1 hash>
(indtil/medmindre du kalder SCRIPT FLUSH
), som du kan ringe til når som helst.
Det problem, du støder på, er, at funktionerne er defineret som ingen argumenter, og KEYS
og ARGV
tabeller er faktisk globale. Så hvis du vil være i stand til at kommunikere mellem Lua-scripts, skal du enten mangle dine KEYS
og ARGV
tabeller, eller du skal bruge standard Redis-tasterummet til kommunikation mellem dine funktioner.
Alt dette sagt er dette i fuldstændig strid med specifikationerne, og det er fuldstændig muligt at stoppe med at fungere på mærkelige måder, hvis du forsøger at køre dette i et Redis-klyngescenarie.