Redis鎖非同步執行緒中使用問題
阿新 • • 發佈:2022-03-16
1.出現的問題:
訂單中心查詢時,出現重複資料,如下圖:
出現上圖結果的原因在於,該訂單記錄存在兩條評價記錄。
根據現有的業務需求,一個圖文諮詢訂單應該只會存在一條有效的評價記錄,但此處可以看到orderId為2021011400000082的訂單出現了兩條評價記錄。
2.定位問題出現的原因:
(1)新增評價記錄方法程式碼截圖
上圖中可以看到此處使用redis鎖,並且在鎖中有判斷是否已存在記錄,已存在這直接return,不會建立新的記錄。
1.醫生結束方法和系統自動結束方法都會呼叫新增待評價記錄方法;
2.在系統結束時會非同步丟擲系統結束事件,該事件內判斷當無待處理處方時,會自動呼叫醫生結束方法(模擬醫生結束)。
下圖1-3為系統結束、系統結束事件及醫生結束程式碼截圖: