Redis
 sql >> Baza danych >  >> NoSQL >> Redis

Redis - tabele Lua jako wartości zwracane - dlaczego to nie działa?

Jeśli odwołasz się do Redis EVAL w dokumentacji możesz zobaczyć, jakie są zasady, których Redis używa do konwersji tabeli Lua na odpowiedź Redis:

  1. Tabela Lua (tablica) -> Redis odpowiedź zbiorcza (skrócona do pierwszego poziomu wewnątrz tablicy Lua, jeśli taka istnieje )
  2. Tabela Lua z jednym polem OK -> Odpowiedź statusu Redis
  3. Tabela Lua z pojedynczym polem błędu -> Odpowiedź błędu Redis

Więc z wyjątkiem szczególnych przypadków 2 i 3, Redis zakłada, że ​​twoja tabela jest sekwencją (tj. listą), co oznacza, że ​​czyta retv[1], retv[2], ... dopóki nie napotka nil element (tutaj jest odpowiednia sekcja kodu źródłowego).

To wyjaśnia, dlaczego retv["test"] jest ignorowane w twoim przypadku.

Jeśli zmienisz kod za pomocą:

local retv = {"This", "is", "a", "bug" }
retv[5] = 1000
return retv

Następnie zwracany jest ten dodatkowy element:

1) "This"
2) "is"
3) "a"
4) "bug"
5) (integer) 1000


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jaki jest najlepszy sposób korzystania z Redis w środowisku Rails wielowątkowych? (Puma / Sidekiq)

  2. Jak używać redis do przechowywania danych hierarchicznych?

  3. Skalowalny sposób rejestrowania danych żądania strony z aplikacji PHP?

  4. Jak serializować mapę w Javie do przechowywania w Redis?

  5. Dlaczego pojedyncza instancja Jedis nie jest bezpieczna wątkowo?