redis 的併發競爭問題是什麼?如何解決這個問題?瞭解 redis 事務的 CAS 方案嗎?

面試題

redis 的併發競爭問題是什麼?如何解決這個問題?瞭解 redis 事務的 CAS 方案嗎?mysql

面試官心理分析

這個也是線上很是常見的一個問題,就是多客戶端同時併發寫一個 key,可能原本應該先到的數據後到了,致使數據版本錯了;或者是多客戶端同時獲取一個 key,修改值以後再寫回去,只要順序錯了,數據就錯了。面試

並且 redis 本身就有自然解決這個問題的 CAS 類的樂觀鎖方案。redis

面試題剖析

某個時刻,多個系統實例都去更新某個 key。能夠基於 zookeeper 實現分佈式鎖。每一個系統經過 zookeeper 獲取分佈式鎖,確保同一時間,只能有一個系統實例在操做某個 key,別人都不容許讀和寫。sql

你要寫入緩存的數據,都是從 mysql 裏查出來的,都得寫入 mysql 中,寫入 mysql 中的時候必須保存一個時間戳,從 mysql 查出來的時候,時間戳也查出來。緩存

每次要寫以前,先判斷一下當前這個 value 的時間戳是否比緩存裏的 value 的時間戳要新。若是是的話,那麼能夠寫,不然,就不能用舊的數據覆蓋新的數據。併發

相關文章
相關標籤/搜索