memcache安裝和下載(win7)及登陸
一、Memcached和Memcache的區別:
網上關於Memcached和Memcache的區別的理解眾說紛紜,我個人的理解是:
Memcached是一個記憶體快取系統,而Memcache是php的一個擴充套件,是php用於操作和管理Memcached的工具。如果安裝了Memcached但沒有安裝Memcache,php無法操控Memcached,但是可以使用命令列來操控Memcached;如果安裝了Memcache卻沒安裝Memcached,則無法使用。只有同時安裝了Memcached和Memcache,才能在PHP中使用Memcached。
以上僅代表個人觀點。
網上關於Memcached
二、安裝memcached:
(這是在網上找的下載地址,我試過,可以下載)
2. 解壓下載後的檔案,把它放到一個目錄中,如D:\memcached。
3. 開啟cmd,進入memcached解壓後存放的目錄,執行命令:
memcached.exe-d install
如果沒有意外的話已經安裝成功了。
(目錄中應該有memcached.exe這個檔案)
4. 測試是否安裝成功:
開啟cmd,進入memcached解壓後存放的目錄,執行命令:
memcached -h
5. 啟動memcached:
開啟cmd,進入memcached解壓後存放的目錄,執行命令:
memcached.exe-d start
這時memcached已經啟動,在工作管理員中可以看到這個程序:
6. 連線Memcached:
開啟cmd,執行命令:
telnet127.0.0.1 11211
即可連線Memcached。
注:win7中可能會出現“telnet’不是內部或外部命令”的錯誤,這是因為系統中預設沒有安裝telnet的緣故,可在“控制面板”->“程式”->“程式和功能”->“開啟或關閉Windows功能”中開啟“
三、安裝memcache的php擴充套件:
(注意:要下載對應php版本和系統位數的dll檔案)
2. 把php_memcache.dll放到php的ext目錄下,如:
D:\wamp\bin\php\php5.5.12\ext
3. 開啟php.ini,在extension處新增一行程式碼:
extension=php_memcache.dll
4. 重啟伺服器。
5. 檢視php的extensions服務,php_memcache現在應該可以使用了,即處於打鉤狀態,之
前是處於歎號狀態的,若還處於歎號狀態,用滑鼠在上面點選一下就好了。
6. 通過程式碼測試php是否已經可以使用memcached:
$memcache= new Memcache;
$memcache->connect("127.0.0.1",11211);
echo"Memcached's version: " . $memcache->getVersion() . "<br/>";
$data= array(
'name' => "程式設計人,在天涯"
);
$memcache-> set("info",$data,0,10);
$info= $memcache->get("info");
echo'<pre>';
print_r($info);
若能打印出memcache中的資訊,則說明php的memcache擴充套件已安裝成功且能使用了!
注意:執行程式碼時若出現錯誤Fatal error: Class 'Memcache' not found,有可能是下載的
php_memcache.dll檔案與php版本不符,或者與系統位數不符。
我的是64位系統,php版本是5.5.12,下載的是php_memcache-3.0.8-5.5-ts-vc11-x64.zip
這個檔案。
四、登陸使用telnet ip 埠號
MemCache設定新增某一個Key值的時候,傳入expiry為0表示這個Key值永久有效,這個Key值也會在30天之後失效,見memcache.c的原始碼:
[js] viewplaincopy在CODE上檢視程式碼片派生到我的程式碼片
#defineREALTIME_MAXDELTA 60*60*24*30
static rel_time_trealtime(const time_t exptime) {
if (exptime == 0) return 0;
if (exptime > REALTIME_MAXDELTA){
if (exptime <=process_started)
return (rel_time_t)1;
return (rel_time_t)(exptime -process_started);
} else {
return (rel_time_t)(exptime +current_time);
}
}
這個失效的時間是memcache原始碼裡面寫的,開發者沒有辦法改變MemCache的Key值失效時間為30天這個限制
MemCache指令彙總
上面說過,已知MemCache的某個節點,直接telnet過去,就可以使用各種命令操作MemCache了,下面看下MemCache有哪幾種命令:
命 令 作 用
get 返回Key對應的Value值
add 新增一個Key值,沒有則新增成功並提示STORED,有則失敗並提示NOT_STORED
set 無條件地設定一個Key值,沒有就增加,有就覆蓋,操作成功提示STORED
replace 按照相應的Key值替換資料,如果Key值不存在則會操作失敗
stats 返回MemCache通用統計資訊(下面有詳細解讀)
statsitems 返回各個slab中item的數目和最老的item的年齡(最後一次訪問距離現在的秒數)
statsslabs 返回MemCache執行期間建立的每個slab的資訊(下面有詳細解讀)
version 返回當前MemCache版本號
flush_all 清空所有鍵值,但不會刪除items,所以此時MemCache依舊佔用記憶體
quit 關閉連線
stats指令解讀
stats是一個比較重要的指令,用於列出當前MemCache伺服器的狀態,拿一組資料舉個例子:
[js] viewplaincopy在CODE上檢視程式碼片派生到我的程式碼片
STAT pid 1023
STAT uptime21069937
STAT time1447235954
STAT version1.4.5
STAT pointer_size64
STAT rusage_user1167.020934
STAT rusage_system3346.933170
STATcurr_connections 29
STATtotal_connections 21
STATconnection_structures 49
STAT cmd_get 49
STAT cmd_set7458
STAT cmd_flush0
STAT get_hits7401
STAT get_misses57
..(delete、incr、decr、cas的hits和misses數,cas還多一個badval)
STAT auth_cmds0
STAT auth_errors0
STAT bytes_read22026555
STAT bytes_written8930466
STAT limit_maxbytes4134304000
STAT accepting_conns1
STATlisten_disabled_num 0
STAT threads 4
STAT bytes151255336
STAT current_items57146
STAT total_items580656
STAT evicitions0
這些引數反映著MemCache伺服器的基本資訊,它們的意思是:
參 數 名 作 用
pid MemCache伺服器的程序id
uptime 伺服器已經執行的秒數
time 伺服器當前的UNIX時間戳
version MemCache版本
pointer_size 當前作業系統指標大小,反映了作業系統的位數,64意味著MemCache伺服器是64位的
rusage_user 程序的累計使用者時間
rusage_system 程序的累計系統時間
curr_connections 當前開啟著的連線數
total_connections 當伺服器啟動以後曾經開啟過的連線數
connection_structures 伺服器分配的連線構造數
cmd_get get命令總請求次數
cmd_set set命令總請求次數
cmd_flush flush_all命令總請求次數
get_hits 總命中次數,重要,快取最重要的引數就是快取命中率,以get_hits/ (get_hits + get_misses)表示,比如這個快取命中率就是99.2%
get_misses 總未命中次數
auth_cmds 認證命令的處理次數
auth_errors 認證失敗的處理次數
bytes_read 總讀取的位元組數
bytes_written 總髮送的位元組數
limit_maxbytes 分配給MemCache的記憶體大小(單位為位元組)
accepting_conns 是否已經達到連線的最大值,1表示達到,0表示未達到
listen_disabled_num 統計當前伺服器連線數曾經達到最大連線的次數,這個次數應該為0或者接近於0,如果這個數字不斷增長,就要小心我們的服務了
threads 當前MemCache匯流排程數,由於MemCache的執行緒是基於事件驅動機制的,因此不會一個執行緒對應一個使用者請求
bytes 當前伺服器儲存的items總位元組數
current_items 當前伺服器儲存的items總數量
total_items 自伺服器啟動以後儲存的items總數量statsslab指令解讀