sql >> Databáze >  >> NoSQL >> Redis

Redis - Použití hodnoty Incr v transakci

Přijatá odpověď výše je zbytečně komplikovaná. Za těchto okolností nemusíte používat multi nebo hodinky. INCR je již atomový a je navržen přesně pro tento scénář. Edit:Děkujeme Itamar Haber &robe007 za změnu přijaté odpovědi. :)

Můžete to udělat jednoduše:

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

Provedením výše uvedeného INCR automaticky uzamkne klíč „id“, zvýší jej za vás, odemkne a vrátí vám jej. Neexistuje tedy žádný způsob, jak by někdo mohl získat duplicitní uživatelské ID pomocí výše uvedeného kódu. Má také výhodu v tom, že nikdy nemůže selhat, na rozdíl od WATCH/GET, kde byste museli zkontrolovat selhání a spustit dotazy znovu, pokud selhaly.




  1. Jak aktualizovat hodnotu pole v Mongoose

  2. Node.js a Redis / hget se synchronizují

  3. Použití klienta StackExchange.Redis s clusterem Redis

  4. proč je to tak pomalé se 100 000 záznamy při použití pipeline v redis?