Redis
 sql >> Base de données >  >> NoSQL >> Redis

Redis - Utilisation de la valeur Incr dans une transaction

La réponse acceptée ci-dessus est inutilement compliquée. Vous n'avez pas besoin d'utiliser un multi ou une montre dans cette circonstance. INCR est déjà atomique et est conçu pour ce scénario précis. Edit :Merci à Itamar Haber et robe007 d'avoir modifié la réponse acceptée. :)

Vous pouvez simplement faire ceci :

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

En faisant ce qui précède, INCR verrouille automatiquement la clé "id", l'incrémente pour vous, la déverrouille et vous la renvoie. Ainsi, il n'y a aucun moyen pour quiconque d'obtenir un identifiant d'utilisateur en double en utilisant le code ci-dessus. Il a également l'avantage de ne jamais vraiment pouvoir échouer, contrairement à WATCH/GET, où vous devriez vérifier les échecs et exécuter à nouveau vos requêtes si elles échouaient.