
【軟件介紹】
Memcached是一款開源式的分布式緩存系統(tǒng),Memcached 1.4.20為最新版本,適用于windows 64位和32位操作系統(tǒng)。Memcached 是性能的數(shù)據(jù)存儲緩存工具,對于數(shù)據(jù)庫龐大的服務(wù)器來說,使用Memcached 有效地減輕服務(wù)器的負擔,提高服務(wù)的運行性能。memcached是一套分布式的快取系統(tǒng),當初是Danga Interactive為了LiveJournal所發(fā)展的,但目前被許多軟件(如MediaWiki)所使用。這是一套開放源代碼軟件,以BSD license授權(quán)釋出。
memcached 是以LiveJournal 旗下Danga Interactive 公司的Brad Fitzpatric 為首開發(fā)的一款軟件?,F(xiàn)在已成為mixi、hatena、Facebook、Vox、LiveJournal等眾多服務(wù)中提高Web應(yīng)用擴展性的重要因 素。許多Web應(yīng)用都將數(shù)據(jù)保存到RDBMS中,應(yīng)用服務(wù)器從中讀取數(shù)據(jù)并在瀏覽器中顯示。但隨著數(shù)據(jù)量的增大、訪問的集中,就會出現(xiàn)RDBMS的負擔加 重、數(shù)據(jù)庫響應(yīng)惡化、網(wǎng)站顯示延遲等重大影響。
這時就該memcached大顯身手了。memcached是高性能的分布式內(nèi)存緩存服務(wù)器。一般的使用目的是,通過緩存數(shù)據(jù)庫查詢結(jié)果,減少數(shù)據(jù)庫訪問次數(shù),以提高動態(tài)Web應(yīng)用的速度、提高可擴展性。
Memcached 的守護進程(daemon )是用C寫的,但是客戶端可以用任何語言來編寫,并通過memcached協(xié)議與守護進程通信。但是它并不提供冗余(例如,復(fù)制其hashmap條目);當某個服務(wù)器S停止運行或崩潰了,所有存放在S上的鍵/值對都將丟失。

【軟件特色】
1、事件處理libevent是個程序庫,它將Linux的epoll、BSD類系統(tǒng)的kqueue等事件處理功能封裝成統(tǒng)一的接口。即使對服務(wù)器的連接數(shù)增加,也能發(fā)揮O《1》的性能。memcached使用這個libevent庫,因此能在Linux、BSD、Solaris等系統(tǒng)上發(fā)揮其高性能。對于事件處理這里就不再仔細介紹,可以參考Dan Kegel的The C10K Problem。
2、存儲方式
為了提升性能,memcached中保存的數(shù)據(jù)都存儲在memcached內(nèi)置的內(nèi)存存儲空間中。由于數(shù)據(jù)僅存在于內(nèi)存中,因此重啟memcached、重啟系統(tǒng)會導(dǎo)致全部數(shù)據(jù)消失。此外,內(nèi)容容量達到指定值之后,就基于LRU《Least Recently Used》算法自動刪除不使用的緩存。memcached本身是為緩存而設(shè)計的服務(wù)器,因此并沒有過多考慮數(shù)據(jù)的永久性問題。
3、協(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ù)》
4、通信分布式
memcached雖然是“分布式”緩存服務(wù)器,但服務(wù)器端并沒有分布式功能。各個memcached不能互相通信以共享信息。那么這個時候,怎樣進行分布式呢?這完全取決于客戶端的實現(xiàn)。本文也將介紹memcached的分布式。
memcached適應(yīng)于64位系統(tǒng),軟件體積小巧,簡單實用,歡迎有需要的小伙伴們下載使用。

【軟件功能】
一個用PHP編寫的可視化的MemCached管理系統(tǒng)MemAdmin是一款可視化的Memcached管理與監(jiān)控工具,使用PHP開發(fā),體積小,操作簡單。
主要功能:
服務(wù)器參數(shù)監(jiān)控:STATS、SETTINGS、ITEMS、SLABS、SIZES實時刷新
服務(wù)器性能監(jiān)控:GET、DELETE、INCR、DECR、CAS等常用操作命中率實時監(jiān)控
支持數(shù)據(jù)遍歷,方便對存儲內(nèi)容進行監(jiān)視
支持條件查詢,篩選出滿足條件的KEY或VALUE
數(shù)組、JSON等序列化字符反序列顯示
兼容memcache協(xié)議的其他服務(wù),如Tokyo Tyrant (遍歷功能除外)
支持服務(wù)器連接池,多服務(wù)器管理切換方便簡潔
【使用教程】
安裝教程命令提示符下運行
安裝:
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地址, 默認是本機
d start 啟動memcached服務(wù)
d restart 重起memcached服務(wù)
d stop|shutdown 關(guān)閉正在運行的memcached服務(wù)
d install 安裝memcached服務(wù)
d uninstall 卸載memcached服務(wù)
u 以的身份運行 (僅在以root運行的時候有效)
m 最大內(nèi)存使用,單位MB。默認64MB
M 內(nèi)存耗盡時返回錯誤,而不是刪除項
c 最大同時連接數(shù),默認是1024
f 塊大小增長因子,默認是1.25
n 最小分配空間,key+value+flags默認是48
h 顯示幫助

【使用技巧】
許多語言都實現(xiàn)了連接memcached的客戶端,其中以Perl、PHP為主。僅僅memcached網(wǎng)站上列出的語言就有Perl
PHP
Python
Ruby
C#
C/C++
Lua
等等。
如何使用memcached-Server端
在服務(wù)端運行:
# ./memcached -d -m 2048 -l 10.0.0.40 -p 11211
這將會啟動一個占用2G內(nèi)存的進程,并打開11211端口用于接收請求。由于32位系統(tǒng)只能處理4G內(nèi)存的尋址,所以在大于4G內(nèi)存使用PAE的32位服務(wù)器上可以運行2-3個進程,并在不同端口進行監(jiān)聽。
如何使用memcached-Client端
在應(yīng)用端包含一個用于描述Client的Class后,就可以直接使用,非常簡單。
PHP Example:
$options["servers"] = array("192.168.1.41:11211", "192.168.1.42:11212");
$options["debug"] = false;
$memc = new MemCachedClient($options);
$myarr = array("one","two", 3);
$memc->set("key_one", $myarr);
$val = $memc->get("key_one");
print $val[0]."\n"; // prints 'one‘
print $val[1]."\n"; // prints 'two‘
print $val[2]."\n"; // prints 3
CentOS 下的安裝
安裝
yum -y install memcached
設(shè)置為開機啟動
chkconfig --level 2345 memcached on
啟動和停止
/etc/init.d/memcached start|stop
補充:如果安裝缺少其他支持,可以:
yum groupinstall "Development Tools"


































