緩存數據庫雙寫不一致問題
-
問題描述:
高併發下,需要同時更新緩存及數據庫,因爲更新順序導致讀取緩存的值與db值不一致的情況。
-
解決方案:
- 延時雙刪:先刪除緩存後更新db,再延時n ms後刪除緩存。可保證在延時刪除緩存後讀取緩存獲取到的值與db更新後的值一致。
- 異步更新緩存(基於訂閱binlog的同步機制):阿里的canal可對Mysql的binlog進行訂閱。
- 讀Redis:讀操作熱數據都儲存在redis
- 寫mysql:寫操作增刪改都在mysql
- 更新redis:訂閱mysql的binlog更新日誌對redis進行異步更新