Ако се позовавате на Redis EVAL
документация можете да видите какви са правилата, които Redis използва, за да преобразува Lua таблица в Redis отговор:
- Lua таблица (масив) -> многократен групов отговор на Redis (съкратено до първото число вътре в масива Lua, ако има такъв )
- Lua таблица с едно поле OK -> Отговор на състоянието на Redis
- 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