Alap adatkezelésE-kereskedelem

Villámakciók és készlet

Pontosan annyit adjon el, amennyi készleten van, amikor tízezer vásárló kattint egyszerre a Vásárlásra, és tartsa távol a botokat.

készletcsökkentés
Atomikus
túleladott darab
0
magától feloldódó foglalás
10 min
Lépés 1 / 6
A készlet betöltése

500 darab kerül eladásra.

Példa munkamenetplaying
# A készlet betöltése
hotkv> SET stock:sneaker-x 500
OK

Animált bemutató valódi HotKV-parancsokkal és példa-válaszokkal. Kattintson bármelyik lépésre, hogy odaugorjon. A parancsok és a válaszok angolul maradnak, pontosan úgy, ahogy begépeli és látja őket a HotKV-ban.

A probléma

Egy villámakciónál a készletadatbázis szűk keresztmetszet, pontosan akkor, amikor a legjobban számít. Az olvas-aztán-ír ellenőrzések párhuzamosan túleladnak, az elhagyott kosarak örökre lefoglalják a készletet, a botok pedig még azelőtt megveszik a készletet, hogy a valódi vásárlók betöltenék az oldalt.

Hogyan kezeli a HotKV

A készlet egy atomikusan csökkentett számlálóban él, így az egyidejű vásárlók soha nem vihetnek el többet, mint ami van. Minden foglalás egy tízperces lejáratú kulcs, a vásárlónkénti sebességkorlát lassítja a botokat, a megerősített rendelések pedig egy streamre kerülnek, hogy a teljesítés a saját tempójában dolgozza fel őket.

Lépésről lépésre

Mi történik, parancsról parancsra

  1. 01

    A készlet betöltése

    500 darab kerül eladásra.

    SET stock:sneaker-x 500
  2. 02

    A botok kordában tartása

    Minden vásárló 10 másodpercenként kétszer próbálkozhat. A botok azonnal túllépik.

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

    Egy darab levétele

    A DECR atomikus. 10 000 egyidejű kattintás sosem vehet le több mint 500 darabot.

    DECR stock:sneaker-x
  4. 04

    Tíz percig lefoglalva

    A foglalás magától lejár, ha a fizetést elhagyják, és egy takarító visszateszi a darabot.

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

    A kifogyás kezelve

    Amikor a DECR nulla alá megy, a darabot visszaadja, és a vásárló azt látja, hogy elfogyott. A készlet sosem megy sokáig negatívba.

    INCR stock:sneaker-x
  6. 06

    A rendelések átadása a teljesítésnek

    A kifizetett rendelések egy streamhez fűződnek hozzá. A raktárrendszer a saját tempójában dolgozza fel őket.

    XADD orders * order 7781 sku sneaker-x customer 42
Hol használható

Valós helyzetek

Cipő- és merchandise-kiadások

A limitált kiadások másodpercek alatt elfogynak, egyetlen pár túleladása nélkül.

Jegyértékesítés

A helyeket a fizetés alatt néhány percre lefoglalják, és automatikusan felszabadítják, ha a vevő elmegy.

Étel- és élelmiszer-kiszállítás

A kiszállítási idősávok számlálók, amelyeket atomikusan csökkentenek, ahogy az ügyfelek lefoglalják őket.

Beépítve

Amit kap

Atomikus számlálók

A DECR és az INCR egy lépésben, versenyhelyzet nélkül módosítja a készletet.

DECRINCRBY

Lejáró foglalások

A foglalások TTL-es kulcsok.

SETNXEX

Botvédelem

Vásárlónkénti korlátok pontos újrapróbálkozási idővel.

GCRA.LIMIT

Rendelésátadás

Stream a teljesítéshez, fogyasztói csoportokkal és visszaigazolásokkal.

XADDXREADGROUP

Gyakori kérdések

Hogyan adják vissza a lejárt foglalások a készletet?

A lejárt foglalásokat kulcstér-értesítésekkel vagy időszakos söpréssel lehet észrevenni, amely újra növeli a készletszámlálót.

Ellenőrizhetem a készletet anélkül, hogy levennék belőle?

Igen. A GET az aktuális számot adja vissza. Csak a DECR foglal.

Mi a helyzet a több tételes kosarakkal?

Használjon MULTI és EXEC parancsot, vagy egy függvényt, hogy több számlálót együtt csökkentsen.

Kapcsolódó felhasználási esetek

Próbálja ki a saját munkaterhelésén

A HotKV a Redis protokollt beszéli, így egy meglévő klienst ráirányíthat, és lefuttathatja ugyanezeket a parancsokat.