一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

Memcached深度分析

Memcached是danga.com(運營LiveJournal的技術(shù)團(tuán)隊)開發(fā)的一套分布式內(nèi)存對象緩存系統(tǒng),用于在動態(tài)系統(tǒng)中減少數(shù)據(jù)庫負(fù)載,提升性能。關(guān)于這個東西,相信很多人都用過,本文意在通過對memcached的實現(xiàn)及代碼分析,獲得對這個出色的開源軟件更深入的了解,并可以根據(jù)我們的需要對其進(jìn)行更進(jìn)一步的優(yōu)化。末了將通過對BSM_Memcache擴展的分析,加深對memcached的使用方式理解。

本文的部分內(nèi)容可能需要比較好的數(shù)學(xué)基礎(chǔ)作為輔助。

◎Memcached是什么

在闡述這個問題之前,我們首先要清楚它“不是什么”。很多人把它當(dāng)作和SharedMemory那種形式的存儲載體來使用,雖然memcached使用了同樣的“Key=>Value”方式組織數(shù)據(jù),但是它和共享內(nèi)存、APC等本地緩存有非常大的區(qū)別。Memcached是分布式的,也就是說它不是本地的。它基于網(wǎng)絡(luò)連接(當(dāng)然它也可以使用localhost)方式完成服務(wù),本身它是一個獨立于應(yīng)用的程序或守護(hù)進(jìn)程(Daemon方式)。

Memcached使用libevent庫實現(xiàn)網(wǎng)絡(luò)連接服務(wù),理論上可以處理無限多的連接,但是它和Apache不同,它更多的時候是面向穩(wěn)定的持續(xù)連接的,所以它實際的并發(fā)能力是有限制的。在保守情況下memcached的最大同時連接數(shù)為200,這和Linux線程能力有關(guān)系,這個數(shù)值是可以調(diào)整的。關(guān)于libevent可以參考相關(guān)文檔。Memcached內(nèi)存使用方式也和APC不同。APC是基于共享內(nèi)存和MMAP的,memcachd有自己的內(nèi)存分配算法和管理方式,它和共享內(nèi)存沒有關(guān)系,也沒有共享內(nèi)存的限制,通常情況下,每個memcached進(jìn)程可以管理2GB的內(nèi)存空間,如果需要更多的空間,可以增加進(jìn)程數(shù)。

◎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進(jìn)程中止,數(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ò)帶寬都滿負(fù)荷了,memcached進(jìn)程本身并不占用多少CPU資源的情況。

◎Memcached的工作方式

以下的部分中,讀者最好能準(zhǔn)備一份memcached的源代碼。

Memcached是傳統(tǒng)的網(wǎng)絡(luò)服務(wù)程序,如果啟動的時候使用了-d參數(shù),它會以守護(hù)進(jìn)程的方式執(zhí)行。創(chuàng)建守護(hù)進(jìn)程由daemon.c完成,這個程序只有一個daemon函數(shù),這個函數(shù)很簡單(如無特殊說明,代碼以1.2.1為準(zhǔn)):

CODE:

NET技術(shù)Memcached深度分析,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 国产精品揄拍一区二区 | 色婷婷激情五月 | 国产伦理久久精品久久久久 | 五月国产综合视频在线观看 | 97人人干| 亚洲激情五月 | 亚洲香蕉伊综合在人在线 | 中文字幕在线观看91 | 国产精品人成 | 91麻豆精品激情在线观看最新 | 污污网站免费入口链接 | 国产在线一区二区三区 | 伊人福利在线 | 亚洲欧美一区二区三区国产精品 | 国产精品天天影视久久综合网 | 国产激情片 | 色黄在线观看 | 日本亚洲精品色婷婷在线影院 | 69热在线| 日韩国产一区二区 | 亚洲性片 | 国产成人在线播放视频 | 日韩 欧美 国产 亚洲 中文 | 伊人网视频在线 | 午夜国产大片免费观看 | 一级特黄视频 | 日韩欧美一区二区三区 | 中文字幕一区二区在线视频 | 色人影院 | 亚洲成人手机在线 | 国产精品深夜福利免费观看 | 美女综合网 | 青青草一区国产97 | 久久精品国产亚洲a不卡 | 色五月激情五月 | 青青草国产青春综合久久 | 色视频在线看 | 亚洲综合伊人 | 一区二区中文字幕在线观看 | 另类av| 成人中文字幕一区二区三区 |