+
80
-

mysql和redis如何解决订单超卖和少卖的问题的?

请问mysql和redis如何解决订单超卖和少卖的问题的?

网友回复

+
0
-

假设一个mysql数据库表为stock,商品id是prodid

表如下

stocknums  prodid

105             10200001

我们对商品编号为1020001的商品减库存100,我们使用mysql的行锁来解决,代码如下:

SELECT stocknums FROM 'stock' WHERE prodid = 10200001 FROM UPDATE;
UPDATE stock SET stocknums=stocknums-100 WHERE stocknum>=100 AND prodid=10200001; 

请记住,后面的where stocknums>=100是解决超卖的关键。

那么如果使用redis怎么解决呢?

使用decrby 原子操作,返回小于0就表示超卖,代码如下:

decrby 10200001 100

我知道答案,我要回答