sql >> Database >  >> NoSQL >> Redis

Redis - Incr-waarde gebruiken in een transactie

Het geaccepteerde antwoord hierboven is onnodig ingewikkeld. U hoeft in dit geval geen multi of horloge te gebruiken. INCR is al atomair en is ontworpen voor dit exacte scenario. Bewerken:Met dank aan Itamar Haber &robe007 voor het wijzigen van het geaccepteerde antwoord. :)

U kunt dit eenvoudig doen:

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

Door het bovenstaande te doen, vergrendelt INCR automatisch de "id"-sleutel, verhoogt deze voor u, ontgrendelt deze en geeft deze aan u terug. Er is dus voor niemand een manier om een ​​duplicaat gebruikers-ID te krijgen met behulp van de bovenstaande code. Het heeft ook het voordeel dat u nooit echt kunt falen, in tegenstelling tot WATCH/GET, waar u op fouten moet controleren en uw query's opnieuw moet uitvoeren als ze niet werken.




  1. Kan geen verbinding maken met MongoDB Atlas (queryTxt ETIMEOUT)

  2. Hoe een array uit de mongoDB-verzameling te halen?

  3. Hoe alle hosts toe te staan ​​tot een replicaset in mongodb

  4. MongoDB - Meerdere $ of bewerkingen