集中式緩存系統(tǒng)memcached
Memcached是什么?
memcached是一套分布式的快取系統(tǒng),當(dāng)初是Danga Interactive為了LiveJournal所發(fā)展的,但目前被許多軟件(如MediaWiki)所使用。這是一套開放源代碼軟件,以BSD license授權(quán)釋出。
memcached缺乏認證以及安全管制,這代表應(yīng)該將memcached服務(wù)器放置在防火墻后。
memcached的API使用三十二位元的循環(huán)冗余校驗(CRC-32)計算鍵值后,將資料分散在不同的機器上。當(dāng)表格滿了以后,接下來新增的資料會以LRU機制替換掉。由于memcached通常只是當(dāng)作快取系統(tǒng)使用,所以使用memcached的應(yīng)用程式在寫回較慢的系統(tǒng)時(像是后端的數(shù)據(jù)庫)需要額外的程式碼更新memcached內(nèi)的資料。
Memcached適合什么場合?
在很多時候,memcached都被濫用了,這當(dāng)然少不了對它的抱怨。我經(jīng)常在論壇上看見有人發(fā)貼,類似于“如何提高效率”,回復(fù)是“用memcached”,至于怎么用,用在哪里,用來干什么一句沒有。memcached不是***的,它也不是適用在所有場合。
Memcached 是“分布式”的內(nèi)存對象緩存系統(tǒng),那么就是說,那些不需要“分布”的,不需要共享的,或者干脆規(guī)模小到只有一臺服務(wù)器的應(yīng)用,memcached不會帶來 任何好處,相反還會拖慢系統(tǒng)效率,因為網(wǎng)絡(luò)連接同樣需要資源,即使是UNIX本地連接也一樣。 在我之前的測試數(shù)據(jù)中顯示,memcached本地讀寫速度要比直接PHP內(nèi)存數(shù)組慢幾十倍,而APC、共享內(nèi)存方式都和直接數(shù)組差不多??梢?,如果只是 本地級緩存,使用memcached是非常不劃算的。
Memcached在很多時候都是作為數(shù)據(jù)庫前端cache使用的。因為它比數(shù)據(jù)庫少 了很多SQL解析、磁盤操作等開銷,而且它是使用內(nèi)存來管理數(shù)據(jù)的,所以它可以提供比直接讀取數(shù)據(jù)庫更好的性能,在大型系統(tǒng)中,訪問同樣的數(shù)據(jù)是很頻繁 的,memcached可以大大降低數(shù)據(jù)庫壓力,使系統(tǒng)執(zhí)行效率提升。另外,memcached也經(jīng)常作為服務(wù)器之間數(shù)據(jù)共享的存儲媒介,例如在SSO系 統(tǒng)中保存系統(tǒng)單點登陸狀態(tài)的數(shù)據(jù)就可以保存在memcached中,被多個應(yīng)用共享。
需要注意的是,memcached使用內(nèi)存管理數(shù)據(jù), 所以它是易失的,當(dāng)服務(wù)器重啟,或者memcached進程中止,數(shù)據(jù)便會丟失,所以memcached不能用來持久保存數(shù)據(jù)。很多人的錯誤理 解,memcached的性能非常好,好到了內(nèi)存和硬盤的對比程度,其實memcached使用內(nèi)存并不會得到成百上千的讀寫速度提高,它的實際瓶頸在于 網(wǎng)絡(luò)連接,它和使用磁盤的數(shù)據(jù)庫系統(tǒng)相比,好處在于它本身非常“輕”,因為沒有過多的開銷和直接的讀寫方式,它可以輕松應(yīng)付非常大的數(shù)據(jù)交換量,所以經(jīng)常 會出現(xiàn)兩條千兆網(wǎng)絡(luò)帶寬都滿負荷了,memcached進程本身并不占用多少CPU資源的情況
memcached51CTO下載地址:http://down.51cto.com/data/326059















 
 
 






 
 
 
 