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