Redis
 sql >> Datenbank >  >> NoSQL >> Redis

Redis - Verwendung des Incr-Werts in einer Transaktion

Die akzeptierte Antwort oben ist unnötig kompliziert. In diesem Fall müssen Sie kein Multi oder keine Uhr verwenden. INCR ist bereits atomar und wurde genau für dieses Szenario entwickelt. Bearbeiten:Vielen Dank an Itamar Haber &robe007, dass Sie die akzeptierte Antwort geändert haben. :)

Sie können dies einfach tun:

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

Auf diese Weise sperrt INCR automatisch den „id“-Schlüssel, erhöht ihn für Sie, entsperrt ihn und gibt ihn an Sie zurück. Daher gibt es für niemanden eine Möglichkeit, mit dem obigen Code eine doppelte Benutzer-ID zu erhalten. Es hat auch den Vorteil, dass es nie wirklich fehlschlagen kann, im Gegensatz zu WATCH/GET, wo Sie nach Fehlern suchen und Ihre Abfragen erneut ausführen müssten, wenn sie fehlschlagen.