Het antwoord op redis.call
retourneert als een tabel die er als volgt uitziet:{"ok": "string"}
(als het type een string is natuurlijk)
Dus om het goed te controleren, moet u uw code wijzigen in:
local keyType = redis.call("TYPE", KEYS[1]).ok
en de rest van de code werkt prima.
Het probleem is dit:het TYPE-commando is een van de weinige commando's die een "simple string" of "status" redis-antwoord teruggeven (zie de redis-protocolspecificaties voor de responstypes). In de redis lua-documentatie staat dat:
Redis-statusantwoord -> Lua-tabel met een enkel ok-veld met de status
Dat is wat hier gebeurde.