如果您参考Redis
eval文档,则可以看到Redis将Lua表转换为Redis回复所使用的规则:
- Lua表(数组)-> Redis多批量回复( 如果有的话,将被截断为Lua数组中的第一个nil )
- Lua表带有单个ok字段-> Redis状态回复
- 带有单个err字段的Lua表-> Redis错误回复
因此,除了特殊情况2和3之外,Redis假设您的表是一个序列(即列表),这意味着它会
retv[1], retv[2],...一直读取直到遇到一个
nil元素(此处是相应的源代码部分)。
这解释了为什么
retv["test"]在您的情况下会被忽略。
如果您使用以下方法更改代码:
local retv = {"This", "is", "a", "bug" }retv[5] = 1000return retv然后,此附加元素被返回:
1) "This"2) "is"3) "a"4) "bug"5) (integer) 1000



