球鞋与周边发售
限量款在几秒内售罄,一双也不会超卖。
当一万名购物者在同一秒点击购买时,准确卖出您现有的库存,并把机器人挡在门外。
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,或一个函数,同时扣减多个计数器。