2017-12-28 17 views
1

Mehrere Prozesse haben Zugriff auf meinen Redis Store. Wenn Sie einen neuen Benutzer Hash-Zugabe, muss ich die folgenden Schritte:node redis - id generation race condition

  1. incr userId
  2. set user: [der erhöhte userId] ...

Wie kann ich diese Schritte bündeln in eine Transaktion? die INCR Operation ist atomar und garantiert zurück ein Rennen frei -

const client = require('redis').createClient(); 

client.on("connect",() => { 
    const multi = client.multi(); 
    multi.incr("userId", (userId) => { 
     console.log("new userId is %s", userId); // TODO userId should not be null 
     multi.set("user:"+userId, {name:"UserName"}); 
    }); 
    multi.exec(); // TODO after the execution I expect to see the key user:null using redis-cli, but it does not exist 
}); 

Antwort

0

Sie nicht die Antwort von einer Operation an einer Transaktion innerhalb derselben Transaktion, aber es ist auch nicht nötig, dass in Ihrem Fall verwenden können Einzigartiger Wert.