1. 程式人生 > >Redis實現可靠低延時的訊息佇列

Redis實現可靠低延時的訊息佇列

不過因為使用的是decrBy會導致一種情況出現,當前庫存還剩1個,2個執行緒同時請求,一個請求減去1個庫存,另一個請求減去2個庫存,,如果減去2個庫存的先執行,他會返回一個-1,然後我會加回去,但是在加回去的之前,減1庫存的執行緒執行了,會返回-2,依然沒有辦法減庫存成功,所以在這中情況下,我採用當減庫存返回負數時,在一秒內每隔50毫秒輪詢查詢一次資料,如果查詢回來值大於等於要減去的值,就可以減去,減的時候也得判斷一下返回是不是正數。一秒還是沒有獲取到能夠減庫存,就返回沒有庫存。