Дропы кроссовок и мерча
Лимитированные серии распродаются за секунды без перепродажи ни одной пары.
Продавайте ровно столько, сколько есть на складе, когда десять тысяч покупателей нажимают «Купить» в одну секунду, и не пускайте ботов.
В продажу поступает 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, поэтому вы можете подключить к нему существующий клиент и выполнить те же команды.