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

Redis-トランザクションでのIncr値の使用

    上記の受け入れられた答えは不必要に複雑です。この状況では、マルチを使用したり、ウォッチしたりする必要はありません。 INCRはすでにアトミックであり、この正確なシナリオ向けに設計されています。 編集:受け入れられた答えを変更してくれたItamar Haber&robe007に感謝します。 :)

    簡単にこれを行うことができます:

    var name = 'Josh';
    client.incr('id', function(err, id) {
        client.hmset('user:' + id, 'username', name);
    });
    

    上記を実行することにより、INCRは自動的に「id」キーをロックし、それをインクリメントし、ロックを解除して、あなたに返します。したがって、上記のコードを使用して重複するユーザーIDを取得する方法はありません。また、失敗をチェックし、失敗した場合はクエリを再実行する必要があるWATCH / GETとは異なり、実際には失敗しないという利点もあります。




    1. 自分のAWSアカウントでのRedis™のScaleGridホスティング

    2. 名前の衝突を避けるためにredisでキーに名前空間を付ける方法は?

    3. Redisでの範囲クエリ-SpringDataRedis

    4. Redis DBのようなものはありますが、RAMサイズに制限はありませんか?