KerndataE-commerce

Flash sales en voorraad

Verkoop precies de voorraad die je hebt wanneer tienduizend shoppers in dezelfde seconde op Kopen klikken, en houd de bots buiten.

voorraad verlagen
Atomair
te veel verkochte eenheden
0
reserveringen die zichzelf vrijgeven
10 min
Stap 1 van 6
De voorraad laden

500 eenheden gaan in de verkoop.

Voorbeeldsessieplaying
# De voorraad laden
hotkv> SET stock:sneaker-x 500
OK

Een geanimeerde walkthrough met echte HotKV-commando's en voorbeeldantwoorden. Klik op een stap om ernaartoe te springen. Commando's en antwoorden blijven Engels, precies zoals je ze in HotKV typt en ziet.

Het probleem

Bij een flash sale is de voorraaddatabase de bottleneck precies wanneer het er het meest toe doet. Controles met eerst lezen en dan schrijven verkopen te veel bij gelijktijdigheid, verlaten winkelwagens vergrendelen voorraad voor altijd en bots kopen de voorraad voordat echte klanten de pagina hebben geladen.

Hoe HotKV het aanpakt

De voorraad leeft in een teller die atomair wordt verlaagd, zodat gelijktijdige kopers nooit meer kunnen nemen dan er is. Elke reservering is een sleutel met een verloopdatum van tien minuten, een ratelimit per klant vertraagt de bots en bevestigde bestellingen gaan in een stream zodat fulfilment ze in zijn eigen tempo kan verwerken.

Stap voor stap

Wat er gebeurt, commando voor commando

  1. 01

    De voorraad laden

    500 eenheden gaan in de verkoop.

    SET stock:sneaker-x 500
  2. 02

    De bots in bedwang houden

    Elke klant mag twee keer per 10 seconden proberen. Bots overschrijden dat direct.

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

    Eén eenheid nemen

    DECR is atomair. 10.000 gelijktijdige klikken kunnen nooit meer dan 500 eenheden nemen.

    DECR stock:sneaker-x
  4. 04

    Tien minuten vasthouden

    De reservering verloopt vanzelf als de checkout wordt verlaten, en een sweeper zet de eenheid terug.

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

    Uitverkocht wordt afgehandeld

    Wanneer DECR onder nul komt, wordt de eenheid teruggegeven en ziet de shopper uitverkocht. De voorraad blijft nooit lang negatief.

    INCR stock:sneaker-x
  6. 06

    Bestellingen aan fulfilment overdragen

    Betaalde bestellingen worden aan een stream toegevoegd. Het magazijnsysteem werkt ze in zijn eigen tempo af.

    XADD orders * order 7781 sku sneaker-x customer 42
Waar het past

Praktijkscenario's

Sneaker- en merchandise-drops

Limited editions zijn in seconden uitverkocht zonder één paar te veel te verkopen.

Ticketing

Stoelen worden een paar minuten vastgehouden tijdens de checkout en automatisch vrijgegeven als de koper vertrekt.

Maaltijd- en boodschappenbezorging

Bezorgslots zijn tellers die atomair worden verlaagd terwijl klanten ze boeken.

Ingebouwd

Wat je krijgt

Atomaire tellers

DECR en INCR wijzigen de voorraad in één stap zonder race.

DECRINCRBY

Reserveringen die verlopen

Reserveringen zijn sleutels met een TTL.

SETNXEX

Botbescherming

Limieten per klant met een exacte hertijd.

GCRA.LIMIT

Overdracht van bestellingen

Een stream voor fulfilment, met consumer groups en bevestigingen.

XADDXREADGROUP

Veelgestelde vragen

Hoe geven verlopen reserveringen voorraad terug?

Verlopen reserveringen kunnen via keyspace-notificaties of een periodieke sweep worden opgemerkt, die de voorraadteller weer ophoogt.

Kan ik de voorraad bekijken zonder iets te nemen?

Ja. GET geeft het huidige aantal terug. Alleen DECR reserveert.

Hoe zit het met winkelwagens met meerdere items?

Gebruik MULTI en EXEC, of een functie, om meerdere tellers samen te verlagen.

Verwante use cases

Probeer het op je eigen workload

HotKV spreekt het Redis-protocol, dus je kunt een bestaande client erop richten en dezelfde commando's uitvoeren.