2010-07-21 126 views
1

假設你想保持過去10人次的名單到您的網站在內存緩存中執行的原子陣列修改。在內存緩存

每次有人訪問你的網站的時候,你需要將它們推到一個數組,數組中推卸第一訪問者。

當然,一個潛在的問題是,多個訪問者可重寫,並在同一時間讀取該陣列中,可能脫扣彼此起來。當然,在memcache中沒有原子的推/移。

與2接近同時用戶可能不一致場景訪問:

  1. 用戶A從內存緩存
  2. 用戶B獲取陣列從內存緩存
  3. 用戶A獲得陣列修改陣列(變化將丟失)
  4. 用戶B修改陣列
  5. 用戶在內存緩存A存儲陣列
  6. 用戶B存儲陣列中的memcache (將覆蓋A的3步變化)

你怎麼能做到這樣的事情正確使用的memcache?

回答

0

我們建立CAS此。

  1. 用戶A獲得陣列
  2. 用戶B獲取陣列
  3. 用戶A改變陣列
  4. 用戶B改變陣列
  5. 用戶A例陣列 - 以陣列勝
  6. 用戶B的情況下 - 丟失
  7. 用戶B重複2