Odpowiedź na redis.call
zwraca jako tabelę, która wygląda tak:{"ok": "string"}
(jeśli typ jest oczywiście ciągiem)
Więc aby poprawnie sprawdzić, powinieneś zmienić swój kod na:
local keyType = redis.call("TYPE", KEYS[1]).ok
a reszta kodu będzie działać poprawnie.
Problem polega na tym:polecenie TYPE jest jednym z niewielu poleceń, które zwracają odpowiedź redis „prosty ciąg” lub „status” (patrz specyfikacje protokołu redis dla typów odpowiedzi). W dokumentacji redis lua jest napisane, że:
Odpowiedź statusu Redis -> Tabela Lua z jednym ok polem zawierającym status
Co się tutaj wydarzyło.