Redis
 sql >> база данни >  >> NoSQL >> Redis

Redis - Lua таблици като връщани стойности - защо това не работи

Ако се позовавате на Redis EVAL документация можете да видите какви са правилата, които Redis използва, за да преобразува Lua таблица в Redis отговор:

  1. Lua таблица (масив) -> многократен групов отговор на Redis (съкратено до първото число вътре в масива Lua, ако има такъв )
  2. Lua таблица с едно поле OK -> Отговор на състоянието на Redis
  3. Lua таблица с едно поле за грешка -> Отговор за грешка на Redis

Така че с изключение на специални случаи 2 и 3, Redis приема, че вашата таблица е последователност (т.е. списък), което означава, че чете retv[1], retv[2], ... докато не срещне nil елемент (тук е съответния раздел с изходен код).

Това обяснява защо retv["test"] се игнорира във вашия случай.

Ако промените кода си с:

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

След това се връща този допълнителен елемент:

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. redis dump.rdb / запазване на малки файлове

  2. Обработка на преходни мрежови грешки със StackExchange.Redis

  3. Redis запазва ли данните?

  4. redis-сървър в ubuntu14.04:Адресът за свързване, който вече се използва

  5. Redis pubsub опашка от съобщения, но с обратно извикване, както в ZeroMQ