實戰Memcached快取系統(4)Memcached的CAS協議
尊重知識,轉載請註明本文來自:程式設計藝術家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
-
相關文章
- Memcached 協議協議
- HTTP快取協議實戰HTTP快取協議
- 網路協議之:memcached binary protocol詳解協議Protocol
- 網路協議之:memcached text protocol詳解協議Protocol
- Linux系統中部署memcachedLinux
- Shopify使用Memcached而不是Redis快取提升20%效能Redis快取
- 對比Memcached和Redis,誰才是適合你的快取?Redis快取
- Rust編寫的Memcached快取替代品:memc.rsRust快取
- Memcached
- 輕量級 memcached快取代理 twemproxy實踐快取
- LNMP 分散式叢集(四):Memcached 快取伺服器的搭建LNMP分散式快取伺服器
- Ubuntu 18.04系統編譯安裝Memcached教程。Ubuntu編譯
- Ubuntu 20.04系統編譯安裝Memcached教程。Ubuntu編譯
- Memcached實戰之複製----基於repcached的主從【轉】PCA
- Web快取 – HTTP協議快取Web快取HTTP協議
- 安裝 Memcached
- Memcached 原理剖析
- Linux系統Memcached效能最佳化詳細教程。Linux
- Debian11系統編譯安裝Memcached教程。編譯
- memcached分散式原理與實現分散式
- php開發memcachedPHP
- Centos8 stream系統編譯安裝Memcached教程。CentOS編譯
- Memcached和Redis的區別?Redis
- memcached的學習過程
- [轉]memcached學習系列
- Redis 和 Memcached 比較Redis
- check memcached process and restart if downREST
- 教你用Magent實現Memcached叢集
- 前端要知道的Http協議快取前端HTTP協議快取
- 利用Nginx+tomcat實現memcached的資源接管NginxTomcat
- macOS Sierra系統下PHP5.6安裝memcached擴充套件MacPHP套件
- Memcached高可用元件之repcached元件PCA
- 正確理解memcached,才能更好的使用
- Redis的配置及與memcached區別Redis
- 好好耕耘redis和memcached的區別Redis
- Windows下安裝 和使用Memcached,附memcached-win64-1.4.4-14安裝包Windows
- Memcached 的惹禍,.NET 5.0 的背鍋
- Redis相比Memcached有哪些優勢?Redis
- Memcached安裝與使用例項