阿里JAVA面試題剖析:redis 的併發競爭問題是什麼?如何解決這個問題?瞭解 redis 事務的 CAS 方案...
面試原題

redis 的併發競爭問題是什麼?如何解決這個問題?瞭解 redis 事務的 CAS 方案嗎?
面試官心理分析
這個也是線上非常常見的一個問題,就是 多客戶端同時併發寫 一個 key,可能本來應該先到的資料後到了,導致資料版本錯了;或者是多客戶端同時獲取一個 key,修改值之後再寫回去,只要順序錯了,資料就錯了。
而且 redis 自己就有天然解決這個問題的 CAS 類的樂觀鎖方案。
面試題剖析
某個時刻,多個系統例項都去更新某個 key。可以基於 zookeeper 實現分散式鎖。每個系統通過 zookeeper 獲取分散式鎖,確保同一時間,只能有一個系統例項在操作某個 key,別人都不允許讀和寫。

你要寫入快取的資料,都是從 mysql 裡查出來的,都得寫入 mysql 中,寫入 mysql 中的時候必須儲存一個時間戳,從 mysql 查出來的時候,時間戳也查出來。
每次要 寫之前,先判斷 一下當前這個 value 的時間戳是否比快取裡的 value 的時間戳要新。如果是的話,那麼可以寫,否則,就不能用舊的資料覆蓋新的資料。