Memcached 是一個(gè)高性能的分布式內(nèi)存對(duì)象緩存系統(tǒng),用于動(dòng)態(tài)Web應(yīng)用以減輕數(shù)據(jù)庫負(fù)載。它通過在內(nèi)存中緩存數(shù)據(jù)和對(duì)象來減少讀取數(shù)據(jù)庫的次數(shù),從而提高動(dòng)態(tài)、數(shù)據(jù)庫驅(qū)動(dòng)網(wǎng)站的速度。Memcached基于一個(gè)存儲(chǔ)鍵/值對(duì)的hashmap。其守護(hù)進(jìn)程(daemon )是用C寫的,但是客戶端可以用任何語言來編寫,并通過memcached協(xié)議與守護(hù)進(jìn)程通信。
成都創(chuàng)新互聯(lián)公司服務(wù)項(xiàng)目包括水富網(wǎng)站建設(shè)、水富網(wǎng)站制作、水富網(wǎng)頁制作以及水富網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,水富網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到水富省份的部分城市,未來相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!memcached缺乏認(rèn)證以及安全管制,這代表應(yīng)該將memcached服務(wù)器放置在防火墻后
特征memcached作為高速運(yùn)行的分布式緩存服務(wù)器,具有以下的特點(diǎn)。
· 協(xié)議簡單
· 基于libevent的事件處理
· 內(nèi)置內(nèi)存存儲(chǔ)方式
· memcached不互相通信的分布式
事件處理libevent是個(gè)程序庫,它將Linux的epoll、BSD類操作系統(tǒng)的kqueue等事件處理功能封裝成統(tǒng)一的接口。即使對(duì)服務(wù)器的連接數(shù)增加,也能發(fā)揮O(1)的性能。memcached使用這個(gè)libevent庫,因此能在Linux、BSD、Solaris等操作系統(tǒng)上發(fā)揮其高性能。關(guān)于事件處理這里就不再詳細(xì)介紹,可以參考Dan Kegel的The C10K Problem。
存儲(chǔ)方式為了提高性能,memcached中保存的數(shù)據(jù)都存儲(chǔ)在memcached內(nèi)置的內(nèi)存存儲(chǔ)空間中。由于數(shù)據(jù)僅存在于內(nèi)存中,因此重啟memcached、重啟操作系統(tǒng)會(huì)導(dǎo)致全部數(shù)據(jù)消失。另外,內(nèi)容容量達(dá)到指定值之后,就基于LRU(Least Recently Used)算法自動(dòng)刪除不使用的緩存。memcached本身是為緩存而設(shè)計(jì)的服務(wù)器,因此并沒有過多考慮數(shù)據(jù)的永久性問題。
通信分布式memcached盡管是“分布式”緩存服務(wù)器,但服務(wù)器端并沒有分布式功能。各個(gè)memcached不會(huì)互相通信以共享信息。那么,怎樣進(jìn)行分布式呢?這完全取決于客戶端的實(shí)現(xiàn)。本文也將介紹memcached的分布式。
主要功能:
服務(wù)器參數(shù)監(jiān)控:STATS、SETTINGS、ITEMS、SLABS、SIZES實(shí)時(shí)刷新
服務(wù)器性能監(jiān)控:GET、DELETE、INCR、DECR、CAS等常用操作命中率實(shí)時(shí)監(jiān)控
支持?jǐn)?shù)據(jù)遍歷,方便對(duì)存儲(chǔ)內(nèi)容進(jìn)行監(jiān)視
支持條件查詢,篩選出滿足條件的KEY或VALUE
數(shù)組、JSON等序列化字符反序列顯示
兼容memcache協(xié)議的其他服務(wù),如Tokyo Tyrant (遍歷功能除外)
支持服務(wù)器連接池,多服務(wù)器管理切換方便簡潔
Memcached 是以守護(hù)程序方式運(yùn)行于一個(gè)或多個(gè)服務(wù)器中,隨時(shí)接受客戶端的連接操作【客戶端可以由各種語言編寫】??蛻舳耸紫扰c Memcached 服務(wù)建立連接,然后存取對(duì)象。保存在 Memcached 中的對(duì)象是放置在內(nèi)存中的,而不是在硬盤上。
Memcached 進(jìn)程運(yùn)行之后,會(huì)預(yù)申請(qǐng)一塊較大的內(nèi)存空間,自己進(jìn)行管理,用完之后再申請(qǐng),不是每次需要的時(shí)候去向操作系統(tǒng)申請(qǐng)。Memcached將對(duì)象保存在一個(gè)巨大的Hash表中,它還使用NewHash算法來管理Hash表,從而獲得進(jìn)一步的性能提升。所以當(dāng)分配給Memcached的內(nèi)存足夠大的時(shí)候,Memcached的時(shí)間消耗基本上只是網(wǎng)絡(luò)Socket連接了
下面來說說Memcached的不足:
1、數(shù)據(jù)是保存在內(nèi)存當(dāng)中的,一旦服務(wù)進(jìn)程重啟,數(shù)據(jù)會(huì)全部丟失
對(duì)策:可以采取更改Memcached的源代碼,增加定期寫入硬盤的功能
2、Memcached以root權(quán)限運(yùn)行,而且Memcached本身沒有任何權(quán)限管理和認(rèn)證功能,安 全性不足
對(duì)策:可以將Memcached服務(wù)綁定在內(nèi)網(wǎng)IP上,通過防火墻進(jìn)行防護(hù)
1)如果網(wǎng)站包含了訪問量很大的動(dòng)態(tài)網(wǎng)頁,因而數(shù)據(jù)庫的負(fù)載將會(huì)很高。由于大部分?jǐn)?shù)據(jù)庫請(qǐng)求都是讀操作,那么memcached可以顯著地減小數(shù)據(jù)庫負(fù)載。
2)如果數(shù)據(jù)庫服務(wù)器的負(fù)載比較低但CPU使用率很高,這時(shí)可以緩存計(jì)算好的結(jié)果( computed objects )和渲染后的網(wǎng)頁模板(enderred templates)。
3)利用memcached可以緩存session數(shù)據(jù)、臨時(shí)數(shù)據(jù)以減少對(duì)他們的數(shù)據(jù)庫寫操作。
4)緩存一些很小但是被頻繁訪問的文件。
5)緩存Web \'services\'(非IBM宣揚(yáng)的Web Services,譯者注)或RSS feeds的結(jié)果.。
不適用memcached的業(yè)務(wù)場景:
1)緩存對(duì)象的大小大于1MB
Memcached本身就不是為了處理龐大的多媒體(large media)和巨大的二進(jìn)制塊(streaming huge blobs)而設(shè)計(jì)的。
2)key的長度大于250字符
3)虛擬主機(jī)不讓運(yùn)行memcached服務(wù)
如果應(yīng)用本身托管在低端的虛擬私有服務(wù)器上,像vmware, xen這類虛擬化技術(shù)并不適合運(yùn)行memcached。Memcached需要接管和控制大塊的內(nèi)存,如果memcached管理的內(nèi)存
被OS或 hypervisor交換出去,memcached的性能將大打折扣。
4)應(yīng)用運(yùn)行在不安全的環(huán)境中
Memcached為提供任何安全策略,僅僅通過telnet就可以訪問到memcached。如果應(yīng)用運(yùn)行在共享的系統(tǒng)上,需要著重考慮安全問題。
5)業(yè)務(wù)本身需要的是持久化數(shù)據(jù)或者說需要的應(yīng)該是database
文章題目:Memcache
鏈接地址:http://jinyejixie.com/article0/cjcdio.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)、服務(wù)器托管、品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站設(shè)計(jì)公司、虛擬主機(jī)、定制網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)