天天躁日日躁狠狠躁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)系我們修改或刪除,多謝。

主站蜘蛛池模板: 姉调无修版ova国语版 | 免费看大黄高清网站视频在线 | 欧美 亚洲综合在线一区 | 久久精品亚洲AV高清网站性色 | 国产性色AV内射白浆肛交后入 | 99精品国产第一福利网站 | 日本特黄的免费大片视频 | 99热这里只就有精品22 | 艳鉧动漫1~6全集观看在线 | 欧美亚洲国产专区在线 | 中文字幕一区中文亚洲 | 成人小视频免费在线观看 | 美女脱内衣裸身尿口露出来 | xnxx高中生| 国产精品视频第一区二区三区 | 办公室沙发口爆12P 办公室日本肉丝OL在线 | 成年人免费在线视频观看 | 92国产精品午夜免费福利视频 | aaaaaa级特色特黄的毛片 | 在线精品视频免费观看 | 同桌别揉我奶了嗯啊 | 免费啪视频观试看视频 | 91看片淫黄大片.在线天堂 | RUNAWAY韩国动漫免费网 | 久久青草在线视频精品 | 亚洲深夜在线 | 青青久在线视频免费观看 | 在线不卡日本v二区 | 亚洲蜜桃AV色情精品成人 | 欧美狂野乱码一二三四区 | 秋葵app秋葵官网18在线观看 | 国产精品成人影院在线观看 | 久久最新地址获取 | 亚洲国产综合久久精品 | 九九热视频免费观看 | 免费光看午夜请高视频 | 亚洲合集综合久久性色 | 俄罗斯aaaa一级毛片 | 黑人干日本美女 | 国产精品久免费的黄网站 | 我的漂亮朋友在线观看全集免费 |