首先,能放入緩存的數據其實不要求100%跟數據庫一致。具體看場景。
如果回答先更新數據再刪除緩存,不行。
如果回答先更新緩存再更新數據庫,也不行。
方案: 讀寫分離,讀只讀緩存,讀不到才讀數據庫,同時設置緩存。寫的時候,可採用隊列機制處理寫請求,同時加上事務保證強一致性。可以再加入重試機制。成功消費之後才刪除隊列數據。如果讀取數據時候發現同個業務id 數據涉及到寫操作,則讀操作也入隊,等待寫完成才讀取數據。下面是簡單的流程圖:
閱讀更多 wendellFang 的文章
2020-03-04 22:05:03 wendellFang
首先,能放入緩存的數據其實不要求100%跟數據庫一致。具體看場景。
如果回答先更新數據再刪除緩存,不行。
如果回答先更新緩存再更新數據庫,也不行。
方案: 讀寫分離,讀只讀緩存,讀不到才讀數據庫,同時設置緩存。寫的時候,可採用隊列機制處理寫請求,同時加上事務保證強一致性。可以再加入重試機制。成功消費之後才刪除隊列數據。如果讀取數據時候發現同個業務id 數據涉及到寫操作,則讀操作也入隊,等待寫完成才讀取數據。下面是簡單的流程圖:
閱讀更多 wendellFang 的文章