大概的邏輯是這樣的:
cnt = redis.decr(product_key);
if(cnt >= 0)
mq.send(msg); // 實際去減庫存
else
其他邏輯
按理說decr是原子性的操作,應該可以防止超賣才對啊,但是并發一大,就會有超賣現象。一開始以為是mq存在重復消費,但是發現改成如下的demo還是存在這種現象
result = redis.decr(key);
if (result <= 10) {
count ++;
}
print(result +"|"+count);
count的值會大于10。
請各位大佬賜教。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/16317.html
標籤:Web 開發
上一篇:前端通過POST傳值后端無反應
下一篇:java如何禁止拋出例外資訊?
