스니커즈와 굿즈 드롭
한정판이 단 한 켤레도 초과 판매되지 않고 몇 초 만에 매진됩니다.
만 명의 쇼핑객이 같은 순간에 구매를 클릭해도 보유한 재고만큼 정확히 판매하고, 봇은 막아 냅니다.
500개가 판매에 들어갑니다.
실제 HotKV 명령과 예시 응답으로 구성된 애니메이션 안내입니다. 원하는 단계를 클릭하면 해당 단계로 이동합니다. 명령과 응답은 HotKV에서 입력하고 보는 그대로 영어로 표시됩니다.
플래시 세일에서는 가장 중요한 순간에 바로 재고 데이터베이스가 병목이 됩니다. 읽은 뒤 쓰는 검사는 동시성 아래에서 초과 판매를 일으키고, 버려진 장바구니는 재고를 영원히 묶어 두며, 실제 고객이 페이지를 다 불러오기도 전에 봇이 재고를 사 갑니다.
재고는 원자적으로 차감되는 카운터에 있으므로, 동시 구매자가 존재하는 수량보다 많이 가져갈 수 없습니다. 각 예약은 10분 만료가 있는 키이고, 고객별 속도 제한이 봇을 늦추며, 확정된 주문은 스트림에 들어가 주문 처리 시스템이 자기 속도로 처리합니다.
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 600DECR이 0 아래로 내려가면 재고를 되돌리고 쇼핑객에게 품절을 보여 줍니다. 재고가 음수인 상태는 오래가지 않습니다.
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 또는 함수를 사용해 여러 카운터를 함께 차감합니다.