Memcached是一款專業的高性能分布式內存對象緩存系統,該程序可以用于動態Web應用,以減輕數據庫負載,還可以通過內存中緩存數據來減少讀取數據庫的次數。從而能夠提供動態數據庫驅動網站的速度。
Memcached是以LiveJournal 旗下Danga Interactive 公司的Brad Fitzpatric 為首開發的一款軟件。現在已成為mixi、hatena、Facebook、Vox、LiveJournal等眾多服務中提高Web應用擴展性的重要因素。許多Web應用都將數據保存到RDBMS中,應用服務器從中讀取數據并在瀏覽器中顯示。但隨著數據量的增大、訪問的集中,就會出現RDBMS的負擔加重、數據庫響應惡化、網站顯示延遲等重大影響。
【特色介紹】
1、協議
memcached的服務器客戶端通信并不使用復雜的XML等格式,而使用簡單的基于文本行的協議。
因此,通過telnet也能在memcached上保存數據、取得數據。下面是例子。
$ 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 (數據)
STORED (結果)
get foo (取得命令)
VALUE foo 0 3 (數據)
bar (數據)
2、事件處理
libevent是個程序庫,它將Linux的epoll、BSD類操作系統的kqueue等事件處理功能封裝成統一的接口。即使對服務器的連接數增加,也能發揮O(1)的性能。memcached使用這個libevent庫,因此能在Linux、BSD、Solaris等操作系統上發揮其高性能。關于事件處理這里就不再詳細介紹,可以參考Dan Kegel的The C10K Problem。
3、存儲方式
為了提高性能,memcached中保存的數據都存儲在memcached內置的內存存儲空間中。由于數據僅存在于內存中,因此重啟memcached、重啟操作系統會導致全部數據消失。另外,內容容量達到指定值之后,就基于LRU(Least Recently Used)算法自動刪除不使用的緩存。memcached本身是為緩存而設計的服務器,因此并沒有過多考慮數據的永久性問題。
4、通信分布式
memcached盡管是“分布式”緩存服務器,但服務器端并沒有分布式功能。各個memcached不會互相通信以共享信息。那么,怎樣進行分布式呢?這完全取決于客戶端的實現。本文也將介紹memcached的分布式。
【安裝步驟】
Memcached在 Windows 系統下的 x86/x64 版本的安裝方法。
命令提示符下運行
安裝:
memcached -d install
memcached -d start
net start “Memcached Server”
卸載:
memcached -d stop
memcached -d remove
sc delete “Memcached Server”
【使用方法】
memcached的基本設置:
-p 監聽的端口
-l 連接的IP地址, 默認是本機
-d start 啟動memcached服務
-d restart 重起memcached服務
-d stop|shutdown 關閉正在運行的memcached服務
-d install 安裝memcached服務
-d uninstall 卸載memcached服務
-u 以的身份運行 (僅在以root運行的時候有效)
-m 最大內存使用,單位MB。默認64MB
-M 內存耗盡時返回錯誤,而不是刪除項
-c 最大同時連接數,默認是1024
-f 塊大小增長因子,默認是1.25
-n 最小分配空間,key+value+flags默認是48
-h 顯示幫助