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

StackExchange.Redisで基本的なウォッチを行う方法

    WATCHの理由 直接公開されないのは、SE.Redisが単一の接続で異なるコールスタックからのコマンドを多重化するように設計されているためです。これにより、トランザクション作業は非常に必要になります。 厳重に管理されています。

    「変更されていない」の目的がそれ自体であるかどうかはよくわかりません。 、いくつかの既知の値と比較せずに-そうでなければ、競合状態を作成しているだけです。それに対するサポートを追加することは間違いなく可能ですが、私は最初に予想されるユースケースを本当に理解したいと思います。説明してもらえますか?

    編集をやり直してください。好みの例(最後の例)は、redisでは不可能です -SE.Redisとは何の関係もありません。 GETを実行した場合 MULTI内 、EXECまで答えは得られません 完了-したがって、SETの値を使用できない可能性があります :まだ利用できません

    多重化が目的でない場合は、2番目の例を(SE.Redisの機能に基づいて)少し並べ替えることができます:

    WATCH key
    val = GET key
    MULTI
    val = val + 1
    SET key $val
    EXEC
    

    これは典型的な WATCHの使用 :あなたは見る 事前にクエリしていることを確認すると、{key} このループの間は変更されません(または、少なくとも、トランザクションは中止されます。一貫性のない状態はありません)。ただし、WATCH マルチプレクサではうまく機能しません 、これがSE.Redisがトランザクションの前に値をフェッチするルートを強制する理由です。 、次に値を比較して、変更されていないことを表明できます。同じ結果。アプローチは少し異なりますが、マルチプレクサに対して安全です。このトピックの詳細については、こちらをご覧ください。




    1. redis-py:StrictRedis()とRedis()の違いは何ですか?

    2. dockerizedmongoでデータを初期化します

    3. MLモデルを本番環境にデプロイする方法

    4. MongoDB-リレーションシップを作成する