尊重知識,轉載請註明本文來自:編程藝術家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