sql >> Database >  >> NoSQL >> Redis

Redis - Lua-tabellen als retourwaarden - waarom werkt dit niet?

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:

  1. Lua-tabel (array) -> Redis multi bulk-antwoord (afgekort tot de eerste nul in de Lua-array, indien aanwezig )
  2. Lua-tabel met een enkel ok-veld -> Redis-statusantwoord
  3. 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


  1. Kan geen bron uit de pool halen (SocketTimeoutException:)

  2. Een gids voor query's in Spring Data MongoDB

  3. Exporteer mongodb-aggregatieraamwerkresultaat naar een nieuwe verzameling

  4. Verschil tussen op documenten gebaseerde en op sleutel/waarde gebaseerde databases?