Dati di baseE-commerce

Flash sale e inventario

Vendi esattamente lo stock che hai quando diecimila acquirenti cliccano Acquista nello stesso secondo, e tieni fuori i bot.

decremento dello stock
Atomico
unità vendute in eccesso
0
prenotazioni che si liberano da sole
10 min
Passo 1 di 6
Carica lo stock

500 unità vanno in vendita.

Sessione di esempioplaying
# Carica lo stock
hotkv> SET stock:sneaker-x 500
OK

Una dimostrazione animata con comandi HotKV reali e risposte di esempio. Clicca su un passo qualsiasi per andarci. Comandi e risposte restano in inglese, esattamente come li digiti e li vedi in HotKV.

Il problema

In una flash sale il database dell'inventario è il collo di bottiglia proprio quando conta di più. I controlli leggi-poi-scrivi vendono più del disponibile in concorrenza, i carrelli abbandonati bloccano lo stock per sempre e i bot comprano lo stock prima che i clienti veri abbiano finito di caricare la pagina.

Come lo gestisce HotKV

Lo stock vive in un contatore che viene decrementato in modo atomico, quindi acquirenti concorrenti non possono mai prendere più di quanto esiste. Ogni prenotazione è una chiave con una scadenza di dieci minuti, un rate limit per cliente rallenta i bot e gli ordini confermati entrano in uno stream che l'evasione elabora al proprio ritmo.

Passo dopo passo

Cosa succede, comando per comando

  1. 01

    Carica lo stock

    500 unità vanno in vendita.

    SET stock:sneaker-x 500
  2. 02

    Tieni a bada i bot

    Ogni cliente può provare due volte ogni 10 secondi. I bot superano subito il limite.

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

    Prendi un'unità

    DECR è atomico. 10.000 clic concorrenti non possono mai prendere più di 500 unità.

    DECR stock:sneaker-x
  4. 04

    Tienila per dieci minuti

    La prenotazione scade da sola se il checkout viene abbandonato, e un processo di pulizia rimette a posto l'unità.

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

    Esaurito, gestito

    Quando DECR va sotto zero, l'unità viene restituita e l'acquirente vede esaurito. Lo stock non resta mai negativo a lungo.

    INCR stock:sneaker-x
  6. 06

    Passa gli ordini all'evasione

    Gli ordini pagati vengono aggiunti a uno stream. Il sistema del magazzino li elabora al proprio ritmo.

    XADD orders * order 7781 sku sneaker-x customer 42
Dove si usa

Scenari reali

Drop di sneaker e merchandise

Le edizioni limitate si esauriscono in pochi secondi senza vendere in eccesso un solo paio.

Biglietteria

I posti vengono tenuti per qualche minuto durante il checkout e liberati automaticamente se l'acquirente se ne va.

Consegna di cibo e spesa

Le fasce di consegna sono contatori, decrementati in modo atomico man mano che i clienti le prenotano.

Integrato

Cosa ottieni

Contatori atomici

DECR e INCR cambiano lo stock in un solo passo, senza race condition.

DECRINCRBY

Prenotazioni a scadenza

Le prenotazioni sono chiavi con un TTL.

SETNXEX

Protezione dai bot

Limiti per cliente con un tempo di attesa esatto.

GCRA.LIMIT

Passaggio degli ordini

Uno stream per l'evasione, con consumer group e conferme.

XADDXREADGROUP

Domande frequenti

Come restituiscono lo stock le prenotazioni scadute?

Le prenotazioni scadute si possono rilevare tramite keyspace notification o una pulizia periodica, che incrementa di nuovo il contatore dello stock.

Posso controllare lo stock senza prenderlo?

Sì. GET restituisce il conteggio attuale. Solo DECR prenota.

E i carrelli con più articoli?

Usa MULTI ed EXEC, o una function, per decrementare più contatori insieme.

Casi d'uso correlati

Provalo sul tuo carico di lavoro

HotKV parla il protocollo Redis, quindi puoi puntarci un client esistente ed eseguire questi stessi comandi.