Sneaker- und Merchandise-Drops
Limitierte Editionen sind in Sekunden ausverkauft, ohne dass ein einziges Paar zu viel verkauft wird.
Verkaufen Sie genau den Bestand, den Sie haben, wenn zehntausend Kunden in derselben Sekunde auf Kaufen klicken, und halten Sie die Bots fern.
500 Einheiten gehen in den Verkauf.
Ein animierter Durchlauf mit echten HotKV-Befehlen und Beispielantworten. Klicken Sie auf einen Schritt, um direkt dorthin zu springen. Befehle und Antworten bleiben auf Englisch, genau so, wie Sie sie in HotKV eingeben und sehen.
Bei einem Flash Sale ist die Bestandsdatenbank genau dann der Engpass, wenn es am meisten darauf ankommt. Prüfungen nach dem Muster Lesen-dann-Schreiben überverkaufen bei gleichzeitigen Zugriffen, abgebrochene Warenkörbe sperren Bestand für immer, und Bots kaufen den Bestand weg, bevor echte Kunden die Seite fertig geladen haben.
Der Bestand liegt in einem Zähler, der atomar verringert wird, sodass gleichzeitige Käufer nie mehr nehmen können, als vorhanden ist. Jede Reservierung ist ein Key mit zehn Minuten Ablaufzeit, ein Rate Limit pro Kunde bremst die Bots, und bestätigte Bestellungen gehen in einen Stream, den das Fulfilment in seinem eigenen Tempo abarbeitet.
500 Einheiten gehen in den Verkauf.
SET stock:sneaker-x 500Jeder Kunde darf es zweimal pro 10 Sekunden versuchen. Bots überschreiten das sofort.
GCRA.LIMIT buy:customer:881 10000 2DECR ist atomar. 10.000 gleichzeitige Klicks können nie mehr als 500 Einheiten nehmen.
DECR stock:sneaker-xDie Reservierung läuft von selbst ab, wenn der Checkout abgebrochen wird, und ein Aufräumjob legt die Einheit zurück.
SET hold:sneaker-x:order-7781 customer:42 NX EX 600Fällt DECR unter null, wird die Einheit zurückgegeben, und der Kunde sieht ausverkauft. Der Bestand ist nie lange negativ.
INCR stock:sneaker-xBezahlte Bestellungen werden an einen Stream angehängt. Das Lagersystem arbeitet sie in seinem eigenen Tempo ab.
XADD orders * order 7781 sku sneaker-x customer 42Limitierte Editionen sind in Sekunden ausverkauft, ohne dass ein einziges Paar zu viel verkauft wird.
Plätze werden während des Checkouts einige Minuten reserviert und automatisch freigegeben, wenn der Käufer geht.
Lieferfenster sind Zähler, die atomar verringert werden, wenn Kunden sie buchen.
DECR und INCR ändern den Bestand in einem Schritt, ohne Race Condition.
DECRINCRBYReservierungen sind Keys mit einer TTL.
SETNXEXLimits pro Kunde mit einer exakten Wartezeit.
GCRA.LIMITEin Stream für das Fulfilment, mit Consumer Groups und Bestätigungen.
XADDXREADGROUPAbgelaufene Reservierungen lassen sich über Keyspace Notifications oder einen periodischen Aufräumlauf erkennen, der den Bestandszähler wieder erhöht.
Ja. GET liefert den aktuellen Stand. Nur DECR reserviert.
Verwenden Sie MULTI und EXEC oder eine Funktion, um mehrere Zähler gemeinsam zu verringern.
HotKV spricht das Redis-Protokoll, sodass Sie einen bestehenden Client darauf richten und genau diese Befehle ausführen können.