Om du hänvisar till Redis EVAL
dokumentation kan du se vilka regler Redis använder för att konvertera en Lua-tabell till ett Redis-svar:
- Lua-tabell (array) -> Redis multi bulk-svar (trunkerat till den första nollan inuti Lua-arrayen om någon )
- Lua-tabell med ett enda ok-fält -> Redis-statussvar
- Lua-tabell med ett enda felfält -> Redis felsvar
Så förutom i specialfall 2 och 3, antar Redis att din tabell är en sekvens (dvs lista) vilket betyder att den läser retv[1], retv[2], ...
tills den stöter på en nil
element (här är motsvarande källkodsavsnitt).
Detta förklarar varför retv["test"]
ignoreras i ditt fall.
Om du ändrar din kod med:
local retv = {"This", "is", "a", "bug" }
retv[5] = 1000
return retv
Sedan returneras detta ytterligare element:
1) "This"
2) "is"
3) "a"
4) "bug"
5) (integer) 1000