sql >> Database teknologi >  >> NoSQL >> Redis

Redis - Brug af Incr-værdi i en transaktion

Det accepterede svar ovenfor er unødvendigt kompliceret. Du behøver ikke bruge en multi eller et ur i denne situation. INCR er allerede atomart og er designet til netop dette scenarie. Edit:Tak til Itamar Haber &robe007 for at få det accepterede svar ændret. :)

Du kan ganske enkelt gøre dette:

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

Ved at gøre ovenstående låser INCR automatisk "id"-nøglen, øger den for dig, låser den op og returnerer den til dig. Der er således ingen måde for nogen at få et dublet bruger-id ved at bruge koden ovenfor. Det har også den fordel, at det aldrig rigtig kan fejle, i modsætning til WATCH/GET, hvor du skal tjekke for fejl og køre dine forespørgsler igen, hvis de mislykkedes.




  1. Kan ikke oprette forbindelse til MongoDB Atlas (queryTxt ETIMEOUT)

  2. MongoDb Aggregation:Hvordan kan jeg gruppere en array-1 baseret på en anden array-2, når den gives array-1 og array-2?

  3. Nogen detaljerede og specifikke grunde til hvorfor MongoDB er meget hurtigere end SQL DB'er?

  4. MongoNetworkError:kunne ikke oprette forbindelse til serveren [localhost:27017] ved første forbindelse [MongoNetworkError:connect ECONNREFUSED 127.0.0.1:27017]