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

Memcached深度分析

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

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

◎Memcached是什么

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

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

◎Memcached適合什么場(chǎng)合

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

Memcached是“分布式”的內(nèi)存對(duì)象緩存系統(tǒng),那么就是說(shuō),那些不需要“分布”的,不需要共享的,或者干脆規(guī)模小到只有一臺(tái)服務(wù)器應(yīng)用,memcached不會(huì)帶來(lái)任何好處,相反還會(huì)拖慢系統(tǒng)效率,因?yàn)?a href=/pingce/wangluo/ target=_blank class=infotextkey>網(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解析、磁盤操作等開銷,而且它是使用內(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ò)多的開銷和直接的讀寫方式,它可以輕松應(yīng)付非常大的數(shù)據(jù)交換量,所以經(jīng)常會(huì)出現(xiàn)兩條千兆網(wǎng)絡(luò)帶寬都滿負(fù)荷了,memcached進(jìn)程本身并不占用多少CPU資源的情況。

◎Memcached的工作方式

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

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

CODE:

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

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

主站蜘蛛池模板: 第一次破女视频出血视频 | 国产激情精品久久久久久碰 | 国产成人一区二区三中文 | 国产手机在线亚洲精品观看 | 久久精品国产免费 | yellow在线观看免费高清的日本 | 亚洲高清无码在线 视频 | 伊人香蕉在线播放视频免费 | 8X拨牐拨牐X8免费视频8 | 好男人免费观看在线高清WWW | 极品网红液液酱粉嫩福利照子凌酱 | 日本69色视频在线观看 | 亚洲精品视频在线免费 | 男人天堂黄色 | 闺蜜撬开我的腿用黄瓜折磨我 | 欧美一夜爽爽爽爽爽爽 | 国产三级在线精品男人的天堂 | 国产麻豆福利AV在线观看 | 丰满大屁俄罗斯肥女 | 69久久国产精品热88人妻 | 国产成人一区二区三区在线观看 | 亚洲色综合中文字幕在线 | 亚洲精品国产品国语在线试看 | 男同志china免费视频 | 国产人妻麻豆蜜桃色 | 国产欧美第一页 | 久久九九少妇免费看A片 | 18黄女脱内衣 | 漂亮的保姆3中文版完整版 漂亮的保姆3集电影免费观看中文 | 99国内精精品久久久久久婷婷 | 青青草原伊人 | 秋霞特色大片18岁入口 | 久久久综合中文字幕久久 | 妺妺窝人体色777777野大粗 | 含羞草传媒在线观看 | 最懂男人心论坛 | 6080yy奇领电影在线看 | 和尚轮流澡到高潮H | 18黄女脱内衣 | 精品久久久爽爽久久久AV | 吃胸亲吻吃奶摸下面免费视频 |