Çekirdek veriE-ticaret

Flaş Satışlar ve Envanter

On bin alışverişçi aynı saniyede Satın Al'a tıkladığında tam olarak eldeki stoku satın ve botları dışarıda tutun.

stok azaltma
Atomik
fazla satılan birim
0
kendiliğinden serbest kalan tutmalar
10 dk
Adım 1 / 6
Stoku yükleyin

500 birim satışa çıkar.

Örnek oturumplaying
# Stoku yükleyin
hotkv> SET stock:sneaker-x 500
OK

Gerçek HotKV komutları ve örnek yanıtlarla animasyonlu bir anlatım. Herhangi bir adıma atlamak için üzerine tıklayın. Komutlar ve yanıtlar, HotKV'de yazdığınız ve gördüğünüz haliyle İngilizce kalır.

Sorun

Bir flaş satışta envanter veritabanı, tam en önemli olduğu anda darboğazdır. Oku-sonra-yaz denetimleri eşzamanlılık altında fazla satar, terk edilen sepetler stoku sonsuza dek kilitler ve botlar, gerçek müşteriler sayfayı yüklemeyi bitirmeden stoku satın alır.

HotKV bunu nasıl ele alır

Stok, atomik olarak azaltılan bir sayaçta yaşar; böylece eşzamanlı alıcılar asla var olandan fazlasını alamaz. Her rezervasyon, on dakikalık sona erme süresi olan bir anahtardır, müşteri başına bir hız sınırı botları yavaşlatır ve onaylanan siparişler karşılamanın kendi hızında işlemesi için bir akışa girer.

Adım adım

Ne olur, komut komut

  1. 01

    Stoku yükleyin

    500 birim satışa çıkar.

    SET stock:sneaker-x 500
  2. 02

    Botları kontrol altında tutun

    Her müşteri 10 saniyede iki kez deneyebilir. Botlar bunu hemen aşar.

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

    Bir birim alın

    DECR atomiktir. 10.000 eşzamanlı tıklama asla 500 birimden fazlasını alamaz.

    DECR stock:sneaker-x
  4. 04

    On dakika boyunca tutun

    Ödeme terk edilirse rezervasyon kendiliğinden sona erer ve bir süpürücü birimi geri koyar.

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

    Tükendi durumu ele alınır

    DECR sıfırın altına düştüğünde birim geri verilir ve alışverişçi tükendi görür. Stok asla uzun süre negatif olmaz.

    INCR stock:sneaker-x
  6. 06

    Siparişleri karşılamaya devredin

    Ödenen siparişler bir akışa eklenir. Depo sistemi bunları kendi hızında işler.

    XADD orders * order 7781 sku sneaker-x customer 42
Nereye uyar

Gerçek dünya senaryoları

Spor ayakkabı ve ürün çıkışları

Sınırlı sayıdaki ürünler, tek bir çift bile fazla satılmadan saniyeler içinde tükenir.

Biletleme

Koltuklar ödeme sırasında birkaç dakika tutulur ve alıcı ayrılırsa otomatik olarak serbest bırakılır.

Yemek ve market teslimatı

Teslimat zaman dilimleri sayaçlardır; müşteriler rezervasyon yaptıkça atomik olarak azaltılır.

Yerleşik

Neler elde edersiniz

Atomik sayaçlar

DECR ve INCR stoku tek adımda, yarış olmadan değiştirir.

DECRINCRBY

Sona eren tutmalar

Rezervasyonlar TTL'li anahtarlardır.

SETNXEX

Bot koruması

Müşteri başına sınırlar ve kesin bir yeniden deneme süresi.

GCRA.LIMIT

Sipariş devri

Karşılama için, tüketici grupları ve onaylarla bir akış.

XADDXREADGROUP

Sık sorulan sorular

Süresi dolan tutmalar stoku nasıl geri verir?

Süresi dolan tutmalar anahtar uzayı bildirimleri veya düzenli bir süpürmeyle fark edilebilir; bu da stok sayacını yeniden artırır.

Stoku almadan denetleyebilir miyim?

Evet. GET mevcut sayıyı döndürür. Yalnızca DECR rezerve eder.

Çok ürünlü sepetler ne olacak?

Birkaç sayacı birlikte azaltmak için MULTI ve EXEC ya da bir işlev kullanın.

İlgili kullanım senaryoları

Kendi iş yükünüzde deneyin

HotKV, Redis protokolünü konuşur; bu yüzden mevcut bir istemciyi ona yönlendirip aynı komutları çalıştırabilirsiniz.