Memcached應(yīng)用研究
- 期刊名字:科技廣場
- 文件大小:656kb
- 論文作者:徐劍強,鄒偉平
- 作者單位:南昌大學(xué)
- 更新時間:2020-06-12
- 下載次數(shù):次
Memcached應(yīng)用研究Application Research of Memcached應(yīng)用研究徐劍強鄒偉平Xu Jianqiang Zou Weiping(南昌大學(xué),江西南昌330031)( Nanchang University, Jiangxi Nanchang 330031摘要: Memcached作為目前最杰出的內(nèi)存緩存技術(shù),應(yīng)用越來越多。本文從 Memcached產(chǎn)生的背景出發(fā),闡述了它在髙負載動態(tài)網(wǎng)站減輕數(shù)據(jù)庫負擔(dān)的原理及其應(yīng)用場景,并對 Memcached進行了簡單的應(yīng)用測試,分析了 Memcached的內(nèi)存管理方式相對于傳統(tǒng)內(nèi)存管理的優(yōu)點。關(guān)鍵詞: Memcached;內(nèi)存緩存系統(tǒng);Web查詢中圖分類號:TP391文獻標識碼:A文章編號:1671-4792(2012)07-009503Abrstract: As the most contiguous memory cache technique, Memcached is used more and more currentlyFrom the generated background of Memcached, this paper describes the principle of reducing the burden ofdatabase when it's in high load dynamic website and application scene, and a simple application testing of Memcached is made. Then the paper analyzes the advantages of Memcached memory management mode comparedwith traditional memory managementKeywords: Memcached; Memory Cache System; Web Inquiry0引言danga con(運營 LiveJournal I的技能團隊)開發(fā)的隨著社會的進步和信息化技術(shù)的不斷發(fā)展,網(wǎng)套分布式內(nèi)存對象緩存系統(tǒng),用于在動態(tài)系統(tǒng)中減絡(luò)用戶日益增加,人們利用信息化手段來完成的工少數(shù)據(jù)庫負載,提升性能。作與日俱增,這就使得一些大型的Web應(yīng)用程序并1 Memcached應(yīng)用發(fā)訪問量也急劇增加。快節(jié)奏的現(xiàn)代生活要求我們Memcached是一個高性能的分布式內(nèi)存對象的應(yīng)用系統(tǒng)能夠提供實時性、準確性和高性能的服緩存系統(tǒng),用于動態(tài)Web應(yīng)用,以減輕數(shù)據(jù)庫負載。務(wù),所以人們想了很多方法來提高Web的響應(yīng)速它通過在內(nèi)存中緩存數(shù)據(jù)和對象來減少讀取數(shù)據(jù)庫率,一般的做法有優(yōu)化數(shù)據(jù)庫、提高硬件的性能、增的次數(shù),從而提高動態(tài)、數(shù)據(jù)庫驅(qū)動網(wǎng)站的速度。它大帶寬等。當(dāng)這些方法還不能完全解決問題時,內(nèi)存基于網(wǎng)絡(luò)連接(當(dāng)然它也可以運用 Localhost)方式緩存技術(shù)是一個不錯的選擇。隨著內(nèi)存成本的不斷完成服務(wù),它是一個獨立使用的程序或守護進程下降,使得這個選擇更容易讓人接受( Daemon方式)。 Memcached運用 Libevent庫實現(xiàn)內(nèi)存緩存的出現(xiàn)是基于操作系統(tǒng)中的一個經(jīng)典網(wǎng)絡(luò)連接服務(wù),理論上可以處理無限多的連接,但是理論“在80%的時間里用到的數(shù)據(jù)只有20%”。所以它和 Apache不同,它更多的時候是面向穩(wěn)定的持只要把這少部分的數(shù)據(jù)放到內(nèi)存,那么應(yīng)用程序就續(xù)連接的所以它實際的并發(fā)能力是有限定的。在保直接和內(nèi)存交換數(shù)據(jù),可以使得訪問速度提高數(shù)個守情況下, Memcached i的大同時連接數(shù)為20,這數(shù)量級。和 Linux線程能力中國煤化工以調(diào)整Memcached是目前杰出的內(nèi)存緩存技術(shù),它是的。 Memcached FCNMHG不同。APC是基于共享內(nèi)存和MMAP的, Memcache有自echo"n"str pad (Read datas from MySQL. 60己的內(nèi)存分配算法和管理方式,它和共享內(nèi)存沒有聯(lián)系,也沒有共享內(nèi)存的限定。通常情況下,每個Sconnnect-mysql connect(localhost, 'root, ) /Memcached進程可以管理2GB的內(nèi)存空間。如果連接到mysq需要更多的空間,可以添加進程數(shù)。mysql select db(test;∥/選擇數(shù)據(jù)庫Memcached僅適用于“分布式”的內(nèi)存對象緩Result= mysql query($sql);∥/執(zhí)行查詢存系統(tǒng),也就是說,對于那些不需要“分布”的,不需while(Srow =mysql fetch row(Sresult)要共享的,或者說規(guī)模小到只有一臺服務(wù)器的使用,Sdatas[]= Row;Memcached不會帶來任何優(yōu)點,相反還會降低系統(tǒng)∥將數(shù)據(jù)庫中獲取到的結(jié)果集數(shù)據(jù)保存到效率。因為網(wǎng)絡(luò)連接同樣需要資源,即使是UNX本 memcached中,以供下次訪問時使用。地連接也一樣,所以,如果只是本地級緩存,運用Smc->add(skey, Datas);Memcached是非常不劃算的。3 elseMemcached的工作方式是:當(dāng)用戶第一次調(diào)用echo"n"str pad (Read datas from memcached程序時,首先查看 Memcached中是否有所需要的數(shù)60,)."n";據(jù),如果有直接調(diào)用,如果沒有則從數(shù)據(jù)庫訪問,并}同時寫入 Memcached之中,以備日后調(diào)用。它的var dump( Datas);∥/輸出讀取的數(shù)據(jù)般工作方式可以用圖一來表示2 Memcached的鏈接和測試客戶端連接 Memcached和對已寫入Mercached的數(shù)據(jù)的簡單操作代碼如下∥連接Smem test= new Memcache.S mem test ->connect("localhost", 11211)S mem test ->set (keyl, This is first value, 0,第一次取數(shù)據(jù)60);∥/保存數(shù)據(jù)Sval=$ mem test-get(key 1);echo"Get keyl value: Sval.
replace(keyl This is replace val代碼實現(xiàn)如下ue,0,60);∥替換數(shù)據(jù)Sval=S mem test->get(key 1 );Ssql='SELECT FROM test tabkey=" mykey";/ memcached對象標識符S mem test-> delete(keyl);∥刪除數(shù)據(jù)Sval=S mem test->get(keyl,)mc test-> connect(127.0.0.,1121);∥/連接echo"Get keyl value: " Sval "
memcached的服務(wù)器S mem test→>ushO;∥/清除所有數(shù)據(jù)if ( ( Datas= S mc test->get(Skey)))&S mem test-> closed;關(guān)閉連接∥在 memcached中未獲取到緩存數(shù)據(jù),則使用中國煤化工數(shù)據(jù)庫査詢獲取記錄集。3 MemcCNMHGMemH存管理方式有個很有特色的內(nèi)存管理方式。為了提升效率,它運輔復(fù)制機制,讓 Memcached具備了事務(wù)恢復(fù)能力、用預(yù)申請以及分組的方式來管理內(nèi)存空問,從而不持久化能力和分布式復(fù)制能力,非常適合于需要超需要每次寫入數(shù)據(jù)的時候去 malloc,刪除數(shù)據(jù)的時高性能讀寫速度,但是不需要嚴格事務(wù)約束,能夠被候fe-個指針。 Memcached采用一種名為Sla持久化保存的應(yīng)用場景,例如 Memcachedb被應(yīng)用8bAllocatoion I的機制分配管理內(nèi)存。它的基本原理在新浪博客上面。 Memcachedb給 Memcached添s是按照預(yù)先規(guī)定的大小將分配的內(nèi)存分割成特定加了一些數(shù)據(jù)庫才具備的特性,但是我們還不能說長度的塊。采用這種方式管理內(nèi)存可以很好地避 Memcachedb已經(jīng)是一個數(shù)據(jù)庫了。這是因為免內(nèi)存碎片的問題。 Memcached能夠申請的最小的 Memcached不支持內(nèi)存對象的遍歷操作,當(dāng)然更加用內(nèi)存大小為一個b它的默認大小為M。sb是不能支持復(fù)雜的查詢操作,只能支持根據(jù)已知的究個內(nèi)存塊,是 Memcached一次申請內(nèi)存的最小單key去查詢對應(yīng)的 value。因此如果想把Mem位。在啟動 Memcached的時候可以使用參數(shù)-m指 cached當(dāng)成一個高性能的分布式內(nèi)存數(shù)據(jù)庫來使定其可用內(nèi)存,但是并不是在啟動的那一刻所有的用的話,查詢的問題就沒有辦法解決,只能在應(yīng)用程內(nèi)存就全部分配出去了。只有在需要的時候才會去序里面配合其他方案作一些折中。然而Mem申請,而且每次申請一定是一個 slabo slab的大小固 cached的另外一個開源項目完美地填補了這一個定為M(1048576Bye),一個slab由若干個大小相缺陷就是 Memcache engine等的chun組成。每個 chunk中都保存了一個item結(jié)構(gòu)體和一對key和 value。假定i代表分類, class i參考文獻的計算公式如下[l]奧) Michael Kofler,著楊曉云,等譯 MySQL5hunk size(dasi- default sizetitem size)*P權(quán)威指南(第3版北京:人民郵電出版社,2006HCHUNK ALIGN BYTES[2]MySQL主頁Eb/oL].httP://www.mysqlorgdefault size:默認大小為48字節(jié),也就是mem[3]張堯?qū)W,史美林計算機操作系統(tǒng)教程[M北cached默認的key+ value的大小為48字節(jié),可以通京:清華大學(xué)出版社,2003過-n參數(shù)來調(diào)節(jié)其大小[4]楊立身,曹志文內(nèi)存緩存技術(shù)在門戶網(wǎng)站開Item size:item結(jié)構(gòu)體的長度,固定為32字節(jié)。發(fā)中的應(yīng)用研究電腦知識與技術(shù):學(xué)術(shù)交流,fault size大小為48字節(jié), Item size為32,因此2008,(09):1415-1416class 1的 chunk大小為48+32-80字節(jié);f為 factor[5]Memcached主頁[EBOL]htp:/danga.com是 chunk變化大小的因素,默認值為1.25,調(diào)節(jié)f可 Memcached以影響 chunk的步進大小,在啟動時可以使用f來[6]Ross A Security Engineering: A Guide to指定; CHUNK ALIGN BYTES是一個修正值,用來 Building Dependable Distributed Systems.John Wi-保證 chunk的大小是某個值的整數(shù)倍(在32位機器ley& Sons ISBN0471-389226,2001上要求 chunk的大小是4的整數(shù)倍)。[7]Matt Blaze. 2002 September 15(Preprint, re-從上面的分析可以看到,我們實際可以調(diào)節(jié)的 vised2003 March02). Cryptology and Physical Securi參數(shù)有fn。在 Memcached的實際運行中我們還 ty: Rights Amplification in Master-Keyed Mechanical需要觀察我們的數(shù)據(jù)特征,合理地調(diào)節(jié)f、n的值使 Locks IEEE Security and Privacy (March/April2003)我們的內(nèi)存得到充分的利用減少浪費。同時,這種[8]Computer Emergency Response Team/Coordi方式避免了與Os的頻繁交互,大大提升了效率。 nation Center,200 CERT/CC Vulnerability Metric4結(jié)束語因為 Memcached的數(shù)據(jù)是緩存在內(nèi)存中的,所作者簡介以當(dāng)發(fā)生系統(tǒng)掉電或者重啟的時候,這些數(shù)據(jù)很可徐劍強(1986),男,江西豐城人,主要研究方能會丟失。開發(fā)人員很早認識到這點,所以開發(fā)出向:高校信息化;了 Memcachedb。它是一個由新浪網(wǎng)的開發(fā)人員開鄒偉平(1987中國煤化工大學(xué)網(wǎng)發(fā)出來的開源項目,給 Memcached分布式緩存服務(wù)絡(luò)中心,主要研究YHCNMHG器添加了 Berkeley DB的持久化存儲機制和異步主97
-
C4烯烴制丙烯催化劑 2020-06-12
-
煤基聚乙醇酸技術(shù)進展 2020-06-12
-
生物質(zhì)能的應(yīng)用工程 2020-06-12
-
我國甲醇工業(yè)現(xiàn)狀 2020-06-12
-
石油化工設(shè)備腐蝕與防護參考書十本免費下載,絕版珍藏 2020-06-12
-
四噴嘴水煤漿氣化爐工業(yè)應(yīng)用情況簡介 2020-06-12
-
Lurgi和ICI低壓甲醇合成工藝比較 2020-06-12
-
甲醇制芳烴研究進展 2020-06-12
-
精甲醇及MTO級甲醇精餾工藝技術(shù)進展 2020-06-12
