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

Redisluaスクリプトが機能しない

    redis.callへの応答 次のようなテーブルとして返されます:{"ok": "string"} (もちろんタイプが文字列の場合)

    したがって、適切にチェックするには、コードを次のように変更する必要があります。

    local keyType = redis.call("TYPE", KEYS[1]).ok
    

    残りのコードは正常に機能します。

    問題は次のとおりです。TYPEコマンドは、「単純な文字列」または「ステータス」のredis応答を返す数少ないコマンドの1つです(応答タイプについては、redisプロトコルの仕様を参照してください)。 redis luaのドキュメントには、次のように記載されています。

    ステータス応答を再実行する->ステータスを含む単一のokフィールドを持つLuaテーブル

    これがここで起こったことです。



    1. MongoDB / PyMongo:複数の基準のクエリ-予期しない結果

    2. MongoDB findAndModify()

    3. 自分のAmazonAWSアカウントのMongoDB-as-a-Service

    4. Mongo:特定のフィールドがないアイテムを検索する