Redis
 sql >> Datenbank >  >> NoSQL >> Redis

Redis Lua-Skript funktioniert nicht

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.