Você pode simplesmente fazer isso:
var name = 'Josh';
client.incr('id', function(err, id) {
client.hmset('user:' + id, 'username', name);
});
Ao fazer o acima, o INCR bloqueia automaticamente a chave "id", a incrementa para você, a desbloqueia e a devolve para você. Assim, não há como alguém obter um ID de usuário duplicado usando o código acima. Ele também tem o benefício de nunca ser realmente capaz de falhar, ao contrário de WATCH/GET, onde você teria que verificar falhas e executar suas consultas novamente se elas falhassem.