為何Redis用樂觀鎖,而MySQL數(shù)據(jù)庫卻沒有
3 回答

拉莫斯之舞
TA貢獻(xiàn)1820條經(jīng)驗 獲得超10個贊
Memcached是全內(nèi)存的數(shù)據(jù)緩沖系統(tǒng),Redis雖然支持?jǐn)?shù)據(jù)的持久化,但是全內(nèi)存畢竟才是其高性能的本質(zhì)。
作為基于內(nèi)存的存儲系統(tǒng)來說,機(jī)器物理內(nèi)存的大小就是系統(tǒng)能夠容納的最大數(shù)據(jù)量。
如果需要處理的數(shù)據(jù)量超過了單臺機(jī)器的物理內(nèi)存大小,就需要構(gòu)建分布式集群來擴(kuò)展存儲能力。

婷婷同學(xué)_
TA貢獻(xiàn)1844條經(jīng)驗 獲得超8個贊
redis的樂觀鎖又不是版本號檢查,只是使用完watch命令后在服務(wù)端將監(jiān)控鍵放入一個字典里,當(dāng)前事務(wù)過程中,一旦有被監(jiān)控鍵被修改,將會在watch表內(nèi)寫上dirty標(biāo)志,從而給客戶端返回事務(wù)失敗。
同樣MySQL是可以做樂觀鎖的,表上加字段用于存版本時間戳即可,寫操作前獲得時間戳,寫操作時把之前獲得時間戳作為DML謂詞條件。
另外MVCC跟樂觀鎖關(guān)系不太一樣,MVCC基本還是要將前印象保存到undo塊上的,涉及一致讀再構(gòu)造CR塊
- 3 回答
- 0 關(guān)注
- 811 瀏覽
添加回答
舉報
0/150
提交
取消