スニーカーとグッズの限定販売
限定品は数秒で売り切れますが、1足たりとも過剰販売されません。
1万人の買い物客が同じ1秒に購入をクリックしても手元の在庫を正確に販売し、ボットを締め出します。
500個が販売開始になります。
実際のHotKVコマンドと応答例を使ったアニメーションのウォークスルーです。任意のステップをクリックすると、そこに移動します。 コマンドと応答は、HotKVで実際に入力し表示されるとおり英語のままです。
フラッシュセールでは、最も重要な瞬間に在庫データベースがボトルネックになります。読み取ってから書き込むチェックは同時実行下で過剰販売を起こし、放棄されたカートは在庫を永遠に押さえ、ボットは本物の顧客がページを読み込み終える前に在庫を買い占めます。
在庫はアトミックに減算されるカウンターに保持されるため、同時に購入する人が実在する数より多く取ることはできません。各予約は10分の有効期限付きのキーで、顧客ごとのレート制限がボットを抑え、確定した注文はストリームに入り、出荷側が自分のペースで処理します。
500個が販売開始になります。
SET stock:sneaker-x 500各顧客は10秒あたり2回まで試せます。ボットはすぐに上限を超えます。
GCRA.LIMIT buy:customer:881 10000 2DECRはアトミックです。10,000件の同時クリックでも、500個を超えて取られることはありません。
DECR stock:sneaker-x購入手続きが放棄されると予約は自動で期限切れになり、スイーパーが在庫を戻します。
SET hold:sneaker-x:order-7781 customer:42 NX EX 600DECRがゼロを下回ると、その1個は戻され、買い物客には売り切れと表示されます。在庫がマイナスのまま長く残ることはありません。
INCR stock:sneaker-x支払い済みの注文はストリームに追記されます。倉庫システムは自分のペースでそれらを処理します。
XADD orders * order 7781 sku sneaker-x customer 42限定品は数秒で売り切れますが、1足たりとも過剰販売されません。
座席は購入手続き中の数分間確保され、購入者が離脱すると自動的に解放されます。
配達枠はカウンターで、顧客が予約するたびにアトミックに減算されます。
DECRとINCRは、競合なしに1ステップで在庫を変更します。
DECRINCRBY予約はTTL付きのキーです。
SETNXEX正確な再試行時間を返す、顧客ごとの制限。
GCRA.LIMITコンシューマーグループと確認応答を備えた、出荷用のストリーム。
XADDXREADGROUP期限切れの確保はキースペース通知や定期的なスイープで検知でき、それによって在庫カウンターを再び加算します。
はい。GETは現在の数を返します。予約を行うのはDECRだけです。
MULTIとEXEC、またはファンクションを使って、複数のカウンターをまとめて減算します。
HotKVはRedisプロトコルに対応しているため、既存のクライアントを向けるだけで、これらと同じコマンドを実行できます。