2015-11-20 17 views
1

我在Memcached上保存MySQL查詢結果時考慮了一致性。更新會發生什麼?在Memcached中緩存MySQL查詢的結果並確保更新的一致性

更新時,數據從Memcached中刪除。

但是......請考慮以下情形在下列操作發生順序如下:

  1. 客戶端發送一個更新請求API服務器。
  2. 客戶端B向API服務器發送GET請求。
  3. 這兩個請求都並行執行。
  4. 處理客戶端B請求的腳本從數據庫中提取數據。
  5. 處理客戶端A請求更新數據庫數據的腳本。
  6. 處理客戶端A請求的腳本向memcached發送刪除請求。
  7. 處理客戶端B請求的腳本向memcached發送插入請求。

在這種情況下,memcached會填充舊數據。

如何確保此方案的一致性?

回答

0

集中緩存處理的任何代碼包裝數據庫訪問。腳本A和B,除了通過這個層以外,不要與數據庫交談。

如果你不想經歷所有的麻煩(取決於你使用的堆棧有現有的解決方案),那麼將緩存限制到緩存不一致不會造成任何傷害的情況。