Redis EVAL
を参照する場合 ドキュメントでは、RedisがLuaテーブルをRedis応答に変換するために使用するルールを確認できます:
- Luaテーブル(配列)-> Redisマルチバルク応答(Lua配列内のfirstnilがある場合は切り捨てられます )
- 単一のokフィールドを持つLuaテーブル->Redisステータス応答
- 単一のerrフィールドを持つ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