sql >> データベース >  >> NoSQL >> Redis

Redis-戻り値としてのLuaテーブル-これが機能しないのはなぜですか

    Redis EVALを参照する場合 ドキュメントでは、RedisがLuaテーブルをRedis応答に変換するために使用するルールを確認できます:

    1. Luaテーブル(配列)-> Redisマルチバルク応答(Lua配列内のfirstnilがある場合は切り捨てられます
    2. 単一のokフィールドを持つLuaテーブル->Redisステータス応答
    3. 単一の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
    


    1. SpringデータMongoDb:MappingMongoConverter remove _class

    2. 結果をredisの別のコマンドに渡す

    3. MongoDB insertMany()

    4. mongoengineでReferenceFieldデータを取得する方法は?