当前位置: 首页 > 未分类>阅读正文

redis队列防止超卖

2022.7.5 朱丰华 1242 次 留下评论 324字

主要是利用了 redis 队列的原子性。

在新增(审核)商品时,给商品生成一个 key,键值为数字,比如 5 个库存,则存储 1,2,3,4,5,可以使用 rpush。

如果只是获取商品的库存,可以使用 llen 获取商品的库存个数。

在高并发下,使用 lpop 取出一个库存, pop 是原子性的,无论同时有多少个请求,也会按照顺序进行 pop 操作,把 pop 的返回值转 int ,如果该值为0,说明商品已经售空。如果为正数,则说明抢购成功,pop的数字代表第几个抢到的用户。

redis 队列是一种简单的解决方案,或者使用 redis 事务。

此外,可以配合 mysql 同时使用,在获取库存时,优先判断 redis 的库存,如果 redis 库存校验通过,则正常执行 mysql,无需在 mysql 再次校验。

本篇完,还有疑问?留下评论吧

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注