La réponse à redis.call
renvoie sous la forme d'un tableau qui ressemble à ceci :{"ok": "string"}
(si le type est une chaîne bien sûr)
Donc, pour bien vérifier, vous devez changer votre code en :
local keyType = redis.call("TYPE", KEYS[1]).ok
et le reste du code fonctionnera correctement.
Le problème est le suivant :la commande TYPE est l'une des rares commandes qui renvoient une réponse redis "chaîne simple" ou "état" (voir les spécifications du protocole redis pour les types de réponse). Dans la documentation redis lua, il est indiqué que :
Réponse d'état Redis -> Table Lua avec un seul champ ok contenant l'état
C'est ce qui s'est passé ici.