Memcached是一款專業(yè)的高性能分布式內(nèi)存對(duì)象緩存系統(tǒng),該程序可以用于動(dòng)態(tài)Web應(yīng)用,以減輕數(shù)據(jù)庫負(fù)載,還可以通過內(nèi)存中緩存數(shù)據(jù)來減少讀取數(shù)據(jù)庫的次數(shù)。從而能夠提供動(dòng)態(tài)數(shù)據(jù)庫驅(qū)動(dòng)網(wǎng)站的速度。
Memcached是以LiveJournal 旗下Danga Interactive 公司的Brad Fitzpatric 為首開發(fā)的一款軟件。現(xiàn)在已成為mixi、hatena、Facebook、Vox、LiveJournal等眾多服務(wù)中提高Web應(yīng)用擴(kuò)展性的重要因素。許多Web應(yīng)用都將數(shù)據(jù)保存到RDBMS中,應(yīng)用服務(wù)器從中讀取數(shù)據(jù)并在瀏覽器中顯示。但隨著數(shù)據(jù)量的增大、訪問的集中,就會(huì)出現(xiàn)RDBMS的負(fù)擔(dān)加重、數(shù)據(jù)庫響應(yīng)惡化、網(wǎng)站顯示延遲等重大影響。
【特色介紹】
1、協(xié)議
memcached的服務(wù)器客戶端通信并不使用復(fù)雜的XML等格式,而使用簡單的基于文本行的協(xié)議。
因此,通過telnet也能在memcached上保存數(shù)據(jù)、取得數(shù)據(jù)。下面是例子。
$ telnet localhost 11211
Trying 127.0.0.1
Connected to localhost.localdomain (127.0.0.1)。
Escape character is '^]'.
set foo 0 0 3 (保存命令)
bar (數(shù)據(jù))
STORED (結(jié)果)
get foo (取得命令)
VALUE foo 0 3 (數(shù)據(jù))
bar (數(shù)據(jù))
2、事件處理
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。
3、存儲(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ù)的永久性問題。
4、通信分布式
memcached盡管是“分布式”緩存服務(wù)器,但服務(wù)器端并沒有分布式功能。各個(gè)memcached不會(huì)互相通信以共享信息。那么,怎樣進(jìn)行分布式呢?這完全取決于客戶端的實(shí)現(xiàn)。本文也將介紹memcached的分布式。
【安裝步驟】
Memcached在 Windows 系統(tǒng)下的 x86/x64 版本的安裝方法。
命令提示符下運(yùn)行
安裝:
memcached -d install
memcached -d start
net start “Memcached Server”
卸載:
memcached -d stop
memcached -d remove
sc delete “Memcached Server”
【使用方法】
memcached的基本設(shè)置:
-p 監(jiān)聽的端口
-l 連接的IP地址, 默認(rèn)是本機(jī)
-d start 啟動(dòng)memcached服務(wù)
-d restart 重起memcached服務(wù)
-d stop|shutdown 關(guān)閉正在運(yùn)行的memcached服務(wù)
-d install 安裝memcached服務(wù)
-d uninstall 卸載memcached服務(wù)
-u 以的身份運(yùn)行 (僅在以root運(yùn)行的時(shí)候有效)
-m 最大內(nèi)存使用,單位MB。默認(rèn)64MB
-M 內(nèi)存耗盡時(shí)返回錯(cuò)誤,而不是刪除項(xiàng)
-c 最大同時(shí)連接數(shù),默認(rèn)是1024
-f 塊大小增長因子,默認(rèn)是1.25
-n 最小分配空間,key+value+flags默認(rèn)是48
-h 顯示幫助