Hvis du henviser til Redis EVAL
dokumentation, du kan se, hvilke regler Redis bruger til at konvertere en Lua-tabel til et Redis-svar:
- Lua-tabel (array) -> Redis multi bulk-svar (trunkeret til den første nul inde i Lua-arrayet, hvis nogen )
- Lua-tabel med et enkelt ok-felt -> Redis-statussvar
- Lua-tabel med et enkelt fejlfelt -> Redis fejlsvar
Så undtagen i særlige tilfælde 2 og 3, antager Redis, at din tabel er en sekvens (dvs. liste), hvilket betyder, at den læser retv[1], retv[2], ...
indtil den støder på en nil
element (her er det tilsvarende kildekodeafsnit).
Dette forklarer hvorfor retv["test"]
ignoreres i dit tilfælde.
Hvis du ændrer din kode med:
local retv = {"This", "is", "a", "bug" }
retv[5] = 1000
return retv
Så bliver dette ekstra element returneret:
1) "This"
2) "is"
3) "a"
4) "bug"
5) (integer) 1000