Date de bazăComerț electronic

Vânzări flash și stocuri

Vindeți exact stocul pe care îl aveți atunci când zece mii de cumpărători apasă Cumpără în aceeași secundă și țineți boții la distanță.

decrementare a stocului
Atomică
unități vândute în exces
0
rezervări care se eliberează singure
10 min
Pasul 1 din 6
Încărcați stocul

500 de unități intră la vânzare.

Sesiune de exempluplaying
# Încărcați stocul
hotkv> SET stock:sneaker-x 500
OK

O demonstrație animată cu comenzi HotKV reale și răspunsuri de exemplu. Faceți clic pe orice pas pentru a sări la el. Comenzile și răspunsurile rămân în engleză, exact așa cum le tastați și le vedeți în HotKV.

Problema

Într-o vânzare flash, baza de date de stocuri este blocajul exact când contează cel mai mult. Verificările de tip citire-apoi-scriere vând în exces sub concurență, coșurile abandonate blochează stocul la nesfârșit, iar boții cumpără stocul înainte ca clienții reali să termine de încărcat pagina.

Cum o rezolvă HotKV

Stocul stă într-un contor decrementat atomic, deci cumpărătorii concurenți nu pot lua niciodată mai mult decât există. Fiecare rezervare este o cheie cu expirare de zece minute, o limită de rată pe client încetinește boții, iar comenzile confirmate intră într-un stream pe care onorarea îl procesează în ritmul propriu.

Pas cu pas

Ce se întâmplă, comandă cu comandă

  1. 01

    Încărcați stocul

    500 de unități intră la vânzare.

    SET stock:sneaker-x 500
  2. 02

    Țineți boții sub control

    Fiecare client poate încerca de două ori la 10 secunde. Boții depășesc imediat.

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

    Luați o unitate

    DECR este atomic. 10.000 de clicuri simultane nu pot lua niciodată mai mult de 500 de unități.

    DECR stock:sneaker-x
  4. 04

    Rezervați-o zece minute

    Rezervarea expiră singură dacă checkout-ul este abandonat, iar un proces de curățare pune unitatea la loc.

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

    Epuizarea stocului este tratată

    Când DECR coboară sub zero, unitatea este returnată, iar cumpărătorul vede epuizat. Stocul nu rămâne negativ mult timp.

    INCR stock:sneaker-x
  6. 06

    Predați comenzile onorării

    Comenzile plătite sunt adăugate într-un stream. Sistemul depozitului le parcurge în ritmul propriu.

    XADD orders * order 7781 sku sneaker-x customer 42
Unde se potrivește

Scenarii din lumea reală

Lansări de pantofi sport și de merchandise

Edițiile limitate se vând în câteva secunde, fără să vândă în exces nici măcar o pereche.

Ticketing

Locurile sunt rezervate câteva minute în timpul checkout-ului și eliberate automat dacă cumpărătorul pleacă.

Livrări de mâncare și de alimente

Intervalele de livrare sunt contoare, decrementate atomic pe măsură ce clienții le rezervă.

Integrat

Ce primiți

Contoare atomice

DECR și INCR schimbă stocul într-un singur pas, fără race condition.

DECRINCRBY

Rezervări care expiră

Rezervările sunt chei cu TTL.

SETNXEX

Protecție împotriva boților

Limite pe client, cu un timp exact de reîncercare.

GCRA.LIMIT

Predarea comenzilor

Un stream pentru onorare, cu grupuri de consumatori și confirmări.

XADDXREADGROUP

Întrebări frecvente

Cum returnează rezervările expirate stocul?

Rezervările expirate pot fi observate prin notificări de spațiu de chei sau printr-o curățare periodică, care incrementează din nou contorul de stoc.

Pot verifica stocul fără să-l iau?

Da. GET returnează numărul curent. Doar DECR rezervă.

Dar coșurile cu mai multe articole?

Folosiți MULTI și EXEC, sau o funcție, ca să decrementați mai multe contoare împreună.

Cazuri de utilizare înrudite

Încercați pe propria sarcină de lucru

HotKV vorbește protocolul Redis, așa că puteți îndrepta spre el un client existent și rula aceleași comenzi.