咱們業務處理通常會存在多併發的狀況,會引發一些必要問題。例如:查詢一條數據,判斷不存在則插入,存在則更新,若是是兩條數據同時過來,數據庫可能會插入兩條數據,致使異常狀況!redis
這邊有三種解決方案,供你們參考:sql
1. 緩存層加分佈式鎖,若是是單機服務,利用JVM鎖。分佈式鎖能夠利用redis、zookeeper等數據庫
2. 數據庫增長惟一索引,若是併發,拋出異常,進行補償。精準定位問題,不影響大多數狀況。第一個方法全部都須要加鎖,解鎖緩存
3.利用臨時表,在第二個插入邏輯等時候,利用sql進行判斷,是否存在,可是這樣沒法插入,雖然不報錯,丟失此次本應該更新等數據。併發
轉發:https://blog.csdn.net/hanruikai/article/details/103514513分佈式