Wenn Sie sich auf die Redis EVAL
beziehen Dokumentation können Sie sehen, welche Regeln Redis verwendet, um eine Lua-Tabelle in eine Redis-Antwort zu konvertieren:
- Lua-Tabelle (Array) -> Redis Multi-Bulk-Antwort (auf die erste Null innerhalb des Lua-Arrays gekürzt, falls vorhanden )
- Lua-Tabelle mit einem einzigen OK-Feld -> Redis-Statusantwort
- Lua-Tabelle mit einem einzelnen Fehlerfeld -> Redis-Fehlerantwort
Abgesehen von den Sonderfällen 2 und 3 geht Redis also davon aus, dass Ihre Tabelle eine Sequenz (d. h. eine Liste) ist, was bedeutet, dass sie retv[1], retv[2], ...
lautet bis es auf nil
trifft -Element (hier ist der entsprechende Quellcodeabschnitt).
Dies erklärt, warum retv["test"]
wird in Ihrem Fall ignoriert.
Wenn Sie Ihren Code ändern mit:
local retv = {"This", "is", "a", "bug" }
retv[5] = 1000
return retv
Dann wird dieses zusätzliche Element zurückgegeben:
1) "This"
2) "is"
3) "a"
4) "bug"
5) (integer) 1000