Odpověď na redis.call
vrátí jako tabulku, která vypadá takto:{"ok": "string"}
(pokud je typem samozřejmě řetězec)
Pro správnou kontrolu byste tedy měli změnit svůj kód na:
local keyType = redis.call("TYPE", KEYS[1]).ok
a zbytek kódu bude fungovat dobře.
Problém je v tomto:příkaz TYPE je jedním z mála příkazů, které vracejí odpověď redis typu „jednoduchý řetězec“ nebo „stav“ (typy odpovědí viz specifikace protokolu redis). V dokumentaci redis lua je uvedeno, že:
Redis status response -> Lua tabulka s jediným ok polem obsahujícím stav
Což se tady stalo.