天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

Memcached深度分析

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

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

◎Memcached是什么

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

Memcached使用libevent庫實現(xiàn)網(wǎng)絡連接服務,理論上可以處理無限多的連接,但是它和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進程可以管理2GB的內(nèi)存空間,如果需要更多的空間,可以增加進程數(shù)。

◎Memcached適合什么場合

在很多時候,memcached都被濫用了,這當然少不了對它的抱怨。我經(jīng)常在論壇上看見有人發(fā)貼,類似于“如何提高效率”,回復是“用memcached”,至于怎么用,用在哪里,用來干什么一句沒有。memcached不是萬能的,它也不是適用在所有場合。

Memcached是“分布式”的內(nèi)存對象緩存系統(tǒng),那么就是說,那些不需要“分布”的,不需要共享的,或者干脆規(guī)模小到只有一臺服務器應用,memcached不會帶來任何好處,相反還會拖慢系統(tǒng)效率,因為網(wǎng)絡連接同樣需要資源,即使是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)常作為服務器之間數(shù)據(jù)共享的存儲媒介,例如在SSO系統(tǒng)中保存系統(tǒng)單點登陸狀態(tài)的數(shù)據(jù)就可以保存在memcached中,被多個應用共享。

需要注意的是,memcached使用內(nèi)存管理數(shù)據(jù),所以它是易失的,當服務器重啟,或者memcached進程中止,數(shù)據(jù)便會丟失,所以memcached不能用來持久保存數(shù)據(jù)。很多人的錯誤理解,memcached的性能非常好,好到了內(nèi)存和硬盤的對比程度,其實memcached使用內(nèi)存并不會得到成百上千的讀寫速度提高,它的實際瓶頸在于網(wǎng)絡連接,它和使用磁盤的數(shù)據(jù)庫系統(tǒng)相比,好處在于它本身非常“輕”,因為沒有過多的開銷和直接的讀寫方式,它可以輕松應付非常大的數(shù)據(jù)交換量,所以經(jīng)常會出現(xiàn)兩條千兆網(wǎng)絡帶寬都滿負荷了,memcached進程本身并不占用多少CPU資源的情況。

◎Memcached的工作方式

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

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

CODE:

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

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

主站蜘蛛池模板: 成人毛片在线播放 | gogogo在线观看 | 国产午夜精AV在线麻豆 | 伊人精品视频直播 | 免费精品国产人妻国语 | 青年医生插曲 | 91视频18| 国产麻豆精品人妻无码A片 国产麻豆精品久久一二三 国产麻豆精品传媒AV国产在线 | 忘忧草研究所 麻豆 | 日本xxx片免费高清在线 | 亚洲精品久久无码AV片WWW | 大学生第一次破女在线观看 | A国产一区二区免费入口 | 久久囯产精品777蜜桃传媒 | 扒开胸罩揉她的乳尖视频 | 久久精品久久精品 | 亚洲精品一区国产欧美 | 24小时日本在线观看片免费 | 久久久亚洲国产精品主播 | 久久re这里视频只精品首页 | 99久久麻豆AV色婷婷综合 | 男人插女人逼逼 | 亚洲国产精品一区二区三区在线观看 | 大迪克黑人异族 | 亚洲福利天堂网福利在线观看 | 男人J进女人P | 国产不卡视频在线观看 | 麻豆国产MV视频 | 亚洲日韩一区精品射精 | 99re久久热在线视频 | WWW亚洲精品久久久乳 | qvod小电影 | 扒开老师粉嫩的泬10P | 99热这里只有精品视频2 | 欧美大片免费 | 69日本人XXXX护士HD | 久久国内精品视频 | 在线观看免费av网站 | 亚洲AV无码专区国产精品99 | 蜜臀AV999无码精品国产 | 母乳女神春日もな |