Základní dataE-commerce

Bleskové výprodeje a zásoby

Prodejte přesně tolik zboží, kolik máte, když deset tisíc nakupujících klikne na Koupit ve stejné sekundě, a udržte boty venku.

snížení zásoby
Atomické
přeprodaných kusů
0
rezervace, které se samy uvolní
10 min
Krok 1 z 6
Načtení zásoby

Do prodeje jde 500 kusů.

Ukázková relaceplaying
# Načtení zásoby
hotkv> SET stock:sneaker-x 500
OK

Animovaný průvodce se skutečnými příkazy HotKV a ukázkovými odpověďmi. Kliknutím na kterýkoli krok na něj přeskočíte. Příkazy a odpovědi zůstávají anglicky, přesně tak, jak je v HotKV zadáváte a vidíte.

Problém

Při bleskovém výprodeji je databáze zásob úzkým hrdlem přesně tehdy, kdy na tom nejvíc záleží. Kontroly typu čtení a pak zápis při souběhu přeprodávají, opuštěné košíky zamykají zásoby navždy a boty vykoupí zboží dřív, než skuteční zákazníci dokončí načtení stránky.

Jak to řeší HotKV

Zásoba žije v čítači, který se snižuje atomicky, takže souběžní kupující nikdy nemohou vzít víc, než existuje. Každá rezervace je klíč s desetiminutovou expirací, rate limit na zákazníka boty zpomalí a potvrzené objednávky jdou do streamu, aby je vyřízení zpracovávalo vlastním tempem.

Krok za krokem

Co se děje, příkaz po příkazu

  1. 01

    Načtení zásoby

    Do prodeje jde 500 kusů.

    SET stock:sneaker-x 500
  2. 02

    Držení botů na uzdě

    Každý zákazník smí zkusit dvakrát za 10 sekund. Boty to překročí okamžitě.

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

    Vzetí jednoho kusu

    DECR je atomické. 10 000 souběžných kliknutí nikdy nemůže vzít víc než 500 kusů.

    DECR stock:sneaker-x
  4. 04

    Držení po deset minut

    Rezervace sama vyprší, pokud je pokladna opuštěna, a úklidová úloha kus vrátí zpět.

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

    Vyprodáno se zvládne

    Když DECR klesne pod nulu, kus se vrátí a nakupující vidí vyprodáno. Zásoba nikdy dlouho nezůstane záporná.

    INCR stock:sneaker-x
  6. 06

    Předání objednávek vyřízení

    Zaplacené objednávky se připojí do streamu. Skladový systém je zpracovává vlastním tempem.

    XADD orders * order 7781 sku sneaker-x customer 42
Kam to zapadá

Scénáře z praxe

Dropy tenisek a merchandise

Limitované edice se vyprodají během vteřin, aniž by se přeprodal jediný pár.

Prodej vstupenek

Místa se během placení drží několik minut a automaticky se uvolní, pokud kupující odejde.

Rozvoz jídla a potravin

Doručovací sloty jsou čítače, které se atomicky snižují, jak je zákazníci rezervují.

Zabudováno

Co dostanete

Atomické čítače

DECR a INCR mění zásobu jedním krokem bez souběhu.

DECRINCRBY

Vypršující rezervace

Rezervace jsou klíče s TTL.

SETNXEX

Ochrana proti botům

Limity na zákazníka s přesným časem opakování.

GCRA.LIMIT

Předání objednávek

Stream pro vyřízení, se skupinami konzumentů a potvrzeními.

XADDXREADGROUP

Časté otázky

Jak se vrací zásoby z vypršelých rezervací?

Vypršelé rezervace lze zjistit pomocí notifikací prostoru klíčů nebo periodického úklidu, který čítač zásob znovu zvýší.

Mohu zkontrolovat zásobu, aniž bych ji vzal?

Ano. GET vrátí aktuální počet. Rezervuje jen DECR.

Co košíky s více položkami?

Použijte MULTI a EXEC nebo funkci, abyste snížili několik čítačů společně.

Související případy použití

Vyzkoušejte to na své zátěži

HotKV mluví protokolem Redisu, takže na něj můžete nasměrovat stávajícího klienta a spustit tytéž příkazy.