sql >> Databasteknik >  >> NoSQL >> Redis

Redis - Använder Incr-värde i en transaktion

Det accepterade svaret ovan är onödigt komplicerat. Du behöver inte använda en multi eller klocka i det här fallet. INCR är redan atomär och är designad för detta exakta scenario. Edit:Tack till Itamar Haber &robe007 för att du fick det accepterade svaret ändrat. :)

Du kan helt enkelt göra så här:

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

Genom att göra ovanstående låser INCR automatiskt "id"-nyckeln, ökar den åt dig, låser upp den och returnerar den till dig. Det finns alltså inget sätt för någon att få ett duplicerat användar-ID med koden ovan. Det har också fördelen att aldrig riktigt kunna misslyckas, till skillnad från WATCH/GET, där du måste leta efter fel och köra dina frågor igen om de misslyckades.




  1. Använd mer än ett schema per samling på mongodb

  2. Hur kan jag få värdet från Redis och lägga det i en variabel i NGiNX?

  3. MongoDB / Meteor / Exportera MONGO_URL till distribuerade applikationer

  4. Enhetstestning med MongoDB