實戰Memcached緩存系統(4)Memcached的CAS協議

原文地址:http://blog.csdn.net/poechant/article/details/7082189

尊重知識,轉載請註明本文來自:編程藝術家Poechant的CSDN博客 http://blog.csdn.net/poechant


1. 什麼是CAS協議

很多中文的資料都不會告訴大家CAS的全稱是什麼,不過一定不要把CAS當作中國科學院(China Academy of Sciences)的縮寫。Google.com一下,CAS是什麼?CAS是Check And Set的縮寫。


2. CAS協議原文

http://code.sixapart.com/svn/memcached/trunk/server/doc/protocol.txt


3. CAS的基本原理

基本原理非常簡單,一言以蔽之,就是“版本號”。每個存儲的數據對象,多有一個版本號。我們可以從下面的例子來理解:

如果不採用CAS,則有如下的情景:

第一步,A取出數據對象X;

第二步,B取出數據對象X;

第三步,B修改數據對象X,並將其放入緩存;

第四步,A修改數據對象X,並將其放入緩存。

我們可以發現,第四步中會產生數據寫入衝突。


如果採用CAS協議,則是如下的情景。

第一步,A取出數據對象X,並獲取到CAS-ID1;

第二步,B取出數據對象X,並獲取到CAS-ID2;

第三步,B修改數據對象X,在寫入緩存前,檢查CAS-ID與緩存空間中該數據的CAS-ID是否一致。結果是“一致”,就將修改後的帶有CAS-ID2的X寫入到緩存。

第四步,A修改數據對象Y,在寫入緩存前,檢查CAS-ID與緩存空間中該數據的CAS-ID是否一致。結果是“不一致”,則拒絕寫入,返回存儲失敗。


這樣CAS協議就用了“版本號”的思想,解決了衝突問題。


尊重知識,轉載請註明本文來自:編程藝術家Poechant的CSDN博客 http://blog.csdn.net/poechant

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章