Redis
 sql >> Baza danych >  >> NoSQL >> Redis

Redis — wykorzystanie wartości Incr w transakcji

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ą.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Funkcja klawiszy Redis do dopasowania z wieloma wzorami

  2. Serwer Redis nie może uruchomić więcej niż 1024M maxheap

  3. Połączenie Redis z 127.0.0.1:6379 nie powiodło się - połącz ECONNREFUSED

  4. Docker-compose , mimo to określić plik redis.conf?

  5. Problemy z uruchomieniem instancji OAuthd