Als u verwijst naar de Redis EVAL
documentatie kunt u zien wat de regels zijn die Redis gebruikt om een Lua-tabel om te zetten in een Redis-antwoord:
- Lua-tabel (array) -> Redis multi bulk-antwoord (afgekort tot de eerste nul in de Lua-array, indien aanwezig )
- Lua-tabel met een enkel ok-veld -> Redis-statusantwoord
- Lua-tabel met een enkel foutveld -> Redis-foutantwoord
Dus behalve in speciale gevallen 2 en 3, gaat Redis ervan uit dat uw tabel een reeks is (d.w.z. lijst), wat betekent dat er retv[1], retv[2], ...
staat. totdat het een nil
. tegenkomt element (hier is de corresponderende broncode sectie).
Dit verklaart waarom retv["test"]
wordt in uw geval genegeerd.
Als u uw code wijzigt met:
local retv = {"This", "is", "a", "bug" }
retv[5] = 1000
return retv
Dan wordt dit extra element geretourneerd:
1) "This"
2) "is"
3) "a"
4) "bug"
5) (integer) 1000