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.