La risposta a redis.call
restituisce come una tabella simile a questa:{"ok": "string"}
(se il tipo è una stringa ovviamente)
Quindi, per controllare correttamente, dovresti cambiare il tuo codice in:
local keyType = redis.call("TYPE", KEYS[1]).ok
e il resto del codice funzionerà bene.
Il problema è questo:il comando TYPE è uno dei pochi comandi che restituiscono una risposta redis "stringa semplice" o "stato" (consultare le specifiche del protocollo redis per i tipi di risposta). Nella documentazione redis lua si afferma che:
Risposta stato Redis -> tabella Lua con un unico campo ok contenente lo stato
Che è quello che è successo qui.