Дропи кросівок і мерчу
Обмежені видання розпродаються за секунди, не перепродавши жодної пари.
Продавайте рівно стільки, скільки є на складі, коли десять тисяч покупців натискають «Купити» в ту саму секунду, і не пускайте ботів.
У продаж надходить 500 одиниць.
Анімований покроковий розбір з реальними командами HotKV і прикладами відповідей. Натисніть будь-який крок, щоб перейти до нього. Команди та відповіді залишаються англійською, так само, як ви вводите й бачите їх у HotKV.
Під час флеш-розпродажу база даних запасів є вузьким місцем саме тоді, коли це найважливіше. Перевірки за схемою «прочитай, потім запиши» призводять до перепродажу при паралелізмі, покинуті кошики блокують запаси назавжди, а боти скуповують запаси раніше, ніж справжні клієнти встигають завантажити сторінку.
Запас живе в лічильнику, що зменшується атомарно, тож паралельні покупці ніколи не можуть узяти більше, ніж є. Кожне резервування є ключем з десятихвилинним терміном дії, обмеження частоти на клієнта уповільнює ботів, а підтверджені замовлення потрапляють у потік, який виконання обробляє у власному темпі.
У продаж надходить 500 одиниць.
SET stock:sneaker-x 500Кожен клієнт може пробувати двічі за 10 секунд. Боти перевищують це одразу.
GCRA.LIMIT buy:customer:881 10000 2DECR атомарний. 10,000 одночасних кліків ніколи не можуть узяти більше 500 одиниць.
DECR stock:sneaker-xРезервування спливає само, якщо оформлення покинуто, а прибиральник повертає одиницю назад.
SET hold:sneaker-x:order-7781 customer:42 NX EX 600Коли DECR опускається нижче нуля, одиницю повертають, а покупець бачить «розпродано». Запас ніколи не лишається від'ємним надовго.
INCR stock:sneaker-xОплачені замовлення додаються до потоку. Система складу опрацьовує їх у власному темпі.
XADD orders * order 7781 sku sneaker-x customer 42Обмежені видання розпродаються за секунди, не перепродавши жодної пари.
Місця утримуються кілька хвилин під час оформлення й автоматично звільняються, якщо покупець пішов.
Слоти доставки є лічильниками, що атомарно зменшуються, коли клієнти їх бронюють.
DECR і INCR змінюють запас одним кроком без гонитви.
DECRINCRBYРезервування є ключами з TTL.
SETNXEXЛіміти на клієнта з точним часом повтору.
GCRA.LIMITПотік для виконання, з групами споживачів і підтвердженнями.
XADDXREADGROUPПрострочені утримання можна помітити через сповіщення простору ключів або періодичний обхід, який знову збільшує лічильник запасу.
Так. GET повертає поточну кількість. Резервує лише DECR.
Використайте MULTI і EXEC або функцію, щоб зменшити кілька лічильників разом.
HotKV розмовляє протоколом Redis, тож ви можете направити на нього наявний клієнт і виконувати ті самі команди.