sql >> Databasteknik >  >> NoSQL >> Redis

Redis - Lua-tabeller som returvärden - varför fungerar inte detta

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:

  1. Lua-tabell (array) -> Redis multi bulk-svar (trunkerat till den första nollan inuti Lua-arrayen om någon )
  2. Lua-tabell med ett enda ok-fält -> Redis-statussvar
  3. 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


  1. Skapa nycklar i bulk i Redis - ServiceStack C#

  2. räkna arrayförekomster över alla dokument med mongo

  3. 7 sätt att räkna dokument i MongoDB

  4. Hur man använder MongoDB Stitch i Android-appar