sql >> Database teknologi >  >> NoSQL >> Redis

Redis - Lua-tabeller som returværdier - hvorfor virker dette ikke

Hvis du henviser til Redis EVAL dokumentation, du kan se, hvilke regler Redis bruger til at konvertere en Lua-tabel til et Redis-svar:

  1. Lua-tabel (array) -> Redis multi bulk-svar (trunkeret til den første nul inde i Lua-arrayet, hvis nogen )
  2. Lua-tabel med et enkelt ok-felt -> Redis-statussvar
  3. 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


  1. kortlægning i oprette indeks i elasticsearch gennem mongodb-floden træder ikke i kraft

  2. Sådan cachelagres store objekter ved hjælp af Redis-cache

  3. MongoDB $toObjectId

  4. JHipster Redis Integrationselement ubundet fejl