Memcache是一個高性能的分布式的內存對象緩存系統,通過在內存裡維護一個統一的巨大的hash表,它能夠用來存儲各種格式的數據,包括圖像、視頻、文件以及數據庫檢索的結果等。簡單的說就是將數據調用到內存中,然後從內存中讀取,從而大大提高讀取速度。本文將詳細介紹MemCache的內容
Memcache是danga的一個項目,最早是LiveJour MemCachenal 服務的,最初為了加速 LiveJournal 訪問速度而開發的,後來被很多大型的網站采用
Memcache是以守護程序方式運行於一個或多個服務器中,隨時會接收客戶端的連接和操作
MemCache緩存系統最主要的就是為了提高動態網頁應用,分擔數據庫檢索的壓力。對於網站流量比較大的,可以使用memcache緩解數據庫的壓力,主要的焦點集中在以下兩個方面:1. 使用MemCache作為中間緩存層減少數據庫的壓力和2. MemCache分布式的應用
1、下載軟件,解壓後,共以下三個文件
2、安裝到windows服務,打開cmd命令行,進入memcached目錄,執行memcached -d install命令,安裝服務
[注意]如果在沒有安裝過的情況下,出現"failed to install service or service already installed"錯誤,可能是cmd.exe需要用管理員身份運行
3、啟動服務,執行memcached.exe -d start
最後,在計算機->管理->服務中,可以找到memcached服務
memcache的端口號是11211,在啟動memcache服務後進行連接
[注意]telnet在windows下默認是不開啟的,所以需要手動開啟
telnet 127.0.0.1 11211
進入memcache服務後,輸入stats命令,會出現如下所示
stats命令的功能正如其名:轉儲所連接的memcached實例的當前統計數據。在下例中,執行 stats 命令顯示了關於當前 memcached 實例的信息
STAT pid 22459 進程ID STAT uptime 1027046 服務器運行秒數 STAT time 1273043062 服務器當前unix時間戳 STAT version 1.4.4 服務器版本 STAT pointer_size 64 操作系統字大小(這台服務器是64位的) STAT rusage_user 0.040000 進程累計用戶時間 STAT rusage_system 0.260000 進程累計系統時間 STAT curr_connections 10 當前打開連接數 STAT total_connections 82 曾打開的連接總數 STAT connection_structures 13 服務器分配的連接結構數 STAT cmd_get 54 執行get命令總數 STAT cmd_set 34 執行set命令總數 STAT cmd_flush 3 指向flush_all命令總數 STAT get_hits 9 get命中次數 STAT get_misses 45 get未命中次數 STAT delete_misses 5 delete未命中次數 STAT delete_hits 1 delete命中次數 STAT incr_misses 0 incr未命中次數 STAT incr_hits 0 incr命中次數 STAT decr_misses 0 decr未命中次數 STAT decr_hits 0 decr命中次數 STAT cas_misses 0 cas未命中次數 STAT cas_hits 0 cas命中次數 STAT cas_badval 0 使用擦拭次數 STAT auth_cmds 0 STAT auth_errors 0 STAT bytes_read 15785 讀取字節總數 STAT bytes_written 15222 寫入字節總數 STAT limit_maxbytes 1048576 分配的內存數(字節) STAT accepting_conns 1 目前接受的鏈接數 STAT listen_disabled_num 0 STAT threads 4 線程數 STAT conn_yields 0 STAT bytes 0 存儲item字節數 STAT curr_items 0 item個數 STAT total_items 34 item總數 STAT evictions 0 為獲取空間刪除item的總數
使用命令quit,就可以退出memcache操作界面了
通過使用memcache.exe -h可以查看memcache支持的命令
-p <num> 設置端口號(默認不設置為: 11211) -U <num> UDP監聽端口(默認: 11211, 0 時關閉) -l <ip_addr> 綁定地址(默認:所有都允許,無論內外網或者本機更換IP,有安全隱患,若設置為127.0.0.1就只能本機訪問) -d 獨立進程運行 -d start 啟動memcached服務 -d restart 重起memcached服務 -d stop|shutdown 關閉正在運行的memcached服務 -d install 安裝memcached服務 -d uninstall 卸載memcached服務 -u <username> 綁定使用指定用於運行進程<username> -m <num> 允許最大內存用量,單位M (默認: 64 MB) -P <file> 將PID寫入文件<file>,可以使得後邊進行快速進程終止, 需要與-d 一起使用 -M 內存耗盡時返回錯誤,而不是刪除項 -c 最大同時連接數,默認是1024 -f 塊大小增長因子,默認是1.25 -n 最小分配空間,key+value+flags默認是48 -h 顯示幫助
一般地,memcache使用以下5個常用的命令
stats: 當前所有memcached服務器運行的狀態信息 add: 添加一個數據到服務器 set: 替換一個已經存在的數據,如果數據不存在,則和add命令相同。 get: 從服務器端提取指定的數據。 delete: 刪除指定的單個數據,如果要清除所有數據,可以使用flush_all指令
關於memcache的錯誤提示主要有以下三個指令:
ERROR -- 普通錯誤信息,比如指令錯誤 CLIENT_ERROR <錯誤信息> -- 客戶端錯誤 SERVER_ERROR <錯誤信息> --服務器端錯誤
命令格式
格式:<命令> <鍵> <標記> <有效期> <數據長度>
命令:add(添加)、set(修改)、delete(刪除)、get(獲取)
<鍵>-key:發送過來指令的key內容
<標記>-flags:調用set指令保存數據時的flags標記
有效期:數據在服務器上的有效期限,如果是0,則數據永遠有效,單位是秒
數據的長度:block data 塊數據的長度,一般在這個長度結束以後下一行跟著block data數據內容
返回值
發送完數據後,客戶端一般等待服務器端的返回,服務器端的返回值包括以下兩種:
STORED 數據保存成功 NOT_STORED 數據保存失敗,是因為服務器端這個數據key已經存在
下面以add one 1 0 5為例,add表示添加數據,one表示鍵名,1表示標記,0表示有效期永久,5表示長度為5
回車後輸入12345,再回車,表示鍵值為12345,並保存成功
通過get one可以找到鍵名one的相關信息及鍵值
然後通過set one將標記改為2
再通過get one可以找到鍵名one的相關信息及鍵值
通過delete one刪除one,再通過get one讀取one的信息時為空
一般地,使用memcache並不常用遍歷操作,但可以模擬出遍歷的行為。首先,先存入5個數據
然後,執行stats items命令,可以看到出現很多的items行。執行stats cachedump 1 0命令。這裡的1表示上面圖中items後面的數字,0標示顯示全部的數據,如果是1就標示只顯示1條