Die Antwort auf redis.call
gibt als Tabelle zurück, die wie folgt aussieht:{"ok": "string"}
(wenn der Typ natürlich ein String ist)
Um dies richtig zu überprüfen, sollten Sie Ihren Code ändern in:
local keyType = redis.call("TYPE", KEYS[1]).ok
und der Rest des Codes wird gut funktionieren.
Das Problem ist folgendes:Der TYPE-Befehl ist einer der wenigen Befehle, die eine „einfache Zeichenfolge“ oder „Status“-Redis-Antwort zurückgeben (siehe die Redis-Protokollspezifikationen für die Antworttypen). In der redis lua-Dokumentation heißt es:
Redis-Statusantwort -> Lua-Tabelle mit einem einzigen OK-Feld, das den Status enthält
Was hier passiert ist.