Dane podstawoweE-commerce

Wyprzedaże błyskawiczne i stany magazynowe

Sprzedaj dokładnie tyle, ile masz na stanie, gdy dziesięć tysięcy kupujących klika Kup w tej samej sekundzie, i trzymaj boty z daleka.

zmniejszanie stanu
Atomic
nadsprzedanych sztuk
0
rezerwacje, które same się zwalniają
10 min
Krok 1 z 6
Wczytaj zapas

500 sztuk trafia do sprzedaży.

Przykładowa sesjaplaying
# Wczytaj zapas
hotkv> SET stock:sneaker-x 500
OK

Animowany przegląd z prawdziwymi poleceniami HotKV i przykładowymi odpowiedziami. Kliknij dowolny krok, aby do niego przejść. Polecenia i odpowiedzi pozostają po angielsku, dokładnie tak, jak je wpisujesz i widzisz w HotKV.

Problem

W wyprzedaży błyskawicznej baza stanów magazynowych jest wąskim gardłem dokładnie wtedy, gdy ma to największe znaczenie. Kontrole typu odczyt-potem-zapis nadsprzedają przy współbieżności, porzucone koszyki blokują zapasy na zawsze, a boty kupują towar, zanim prawdziwi klienci skończą ładować stronę.

Jak radzi sobie z tym HotKV

Zapas żyje w liczniku zmniejszanym atomowo, więc równoległi kupujący nigdy nie wezmą więcej, niż istnieje. Każda rezerwacja to klucz z dziesięciominutowym czasem wygaśnięcia, limit zapytań na klienta spowalnia boty, a potwierdzone zamówienia trafiają do strumienia, który realizacja przetwarza we własnym tempie.

Krok po kroku

Co się dzieje, polecenie po poleceniu

  1. 01

    Wczytaj zapas

    500 sztuk trafia do sprzedaży.

    SET stock:sneaker-x 500
  2. 02

    Trzymaj boty w ryzach

    Każdy klient może spróbować dwa razy na 10 sekund. Boty przekraczają to od razu.

    GCRA.LIMIT buy:customer:881 10000 2
  3. 03

    Weź jedną sztukę

    DECR jest atomowe. 10 000 równoległych kliknięć nigdy nie weźmie więcej niż 500 sztuk.

    DECR stock:sneaker-x
  4. 04

    Zarezerwuj na dziesięć minut

    Rezerwacja sama wygasa, jeśli zamówienie zostanie porzucone, a proces sprzątający zwraca sztukę.

    SET hold:sneaker-x:order-7781 customer:42 NX EX 600
  5. 05

    Wyprzedanie jest obsłużone

    Gdy DECR spadnie poniżej zera, sztuka jest zwracana, a kupujący widzi wyprzedane. Zapas nigdy nie jest ujemny na długo.

    INCR stock:sneaker-x
  6. 06

    Przekaż zamówienia do realizacji

    Opłacone zamówienia są dopisywane do strumienia. System magazynowy przetwarza je we własnym tempie.

    XADD orders * order 7781 sku sneaker-x customer 42
Gdzie się sprawdza

Scenariusze z życia

Premiery butów i gadżetów

Limitowane edycje wyprzedają się w sekundy bez nadsprzedania ani jednej pary.

Sprzedaż biletów

Miejsca są rezerwowane na kilka minut podczas zamówienia i zwalniane automatycznie, jeśli kupujący odejdzie.

Dostawa jedzenia i zakupów

Okna dostaw to liczniki, atomowo zmniejszane w miarę rezerwacji przez klientów.

Wbudowane

Co dostajesz

Liczniki atomowe

DECR i INCR zmieniają stan w jednym kroku bez wyścigu.

DECRINCRBY

Wygasające rezerwacje

Rezerwacje to klucze z TTL.

SETNXEX

Ochrona przed botami

Limity na klienta z dokładnym czasem ponowienia.

GCRA.LIMIT

Przekazanie zamówień

Strumień do realizacji, z grupami konsumentów i potwierdzeniami.

XADDXREADGROUP

Częste pytania

Jak wygasłe rezerwacje zwracają zapas?

Wygasłe rezerwacje można wychwycić przez powiadomienia przestrzeni kluczy lub okresowe przeszukiwanie, które ponownie zwiększa licznik zapasu.

Czy mogę sprawdzić zapas bez jego zabierania?

Tak. GET zwraca bieżącą liczbę. Rezerwuje tylko DECR.

A koszyki z wieloma pozycjami?

Użyj MULTI i EXEC lub funkcji, aby zmniejszyć kilka liczników razem.

Powiązane przypadki użycia

Wypróbuj na własnym obciążeniu

HotKV mówi protokołem Redis, więc możesz skierować na niego istniejącego klienta i uruchomić te same polecenia.