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