如果您参考RedisEVAL
文档,则可以看到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