Przyjęta odpowiedź powyżej jest niepotrzebnie skomplikowana. W tej sytuacji nie musisz używać multi ani zegarka. INCR jest już atomowy i jest przeznaczony do tego właśnie scenariusza. Edycja:Podziękowania dla Itamara Habera i robe007 za zmianę przyjętej odpowiedzi. :)
Możesz po prostu to zrobić:
var name = 'Josh';
client.incr('id', function(err, id) {
client.hmset('user:' + id, 'username', name);
});
Wykonując powyższe, INCR automatycznie blokuje klucz „id”, zwiększa go dla Ciebie, odblokowuje i zwraca go do Ciebie. W związku z tym nikt nie ma możliwości uzyskania zduplikowanego identyfikatora użytkownika za pomocą powyższego kodu. Ma również tę zaletę, że nigdy tak naprawdę nie może zawieść, w przeciwieństwie do funkcji WATCH/GET, gdzie musiałbyś sprawdzać błędy i ponownie uruchamiać zapytania, jeśli się nie powiodą.