1. 程式人生 > >memcache安裝和下載(win7)及登陸

memcache安裝和下載(win7)及登陸

一、MemcachedMemcache的區別:

網上關於MemcachedMemcache的區別的理解眾說紛紜,我個人的理解是:

Memcached是一個記憶體快取系統,而Memcachephp的一個擴充套件,是php用於操作和管理Memcached的工具。如果安裝了Memcached但沒有安裝Memcachephp無法操控Memcached,但是可以使用命令列來操控Memcached;如果安裝了Memcache卻沒安裝Memcached,則無法使用。只有同時安裝了MemcachedMemcache,才能在PHP中使用Memcached

以上僅代表個人觀點。

網上關於Memcached

Memcache的安裝教程有很多,下面是我參考網上教程並動手操作後總結出來的方法,注意,我的操作是基於64win7系統的。

二、安裝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功能”中開啟“

Telnet客戶端”。

三、安裝memcachephp擴充套件:

(注意:要下載對應php版本和系統位數的dll檔案)

2. php_memcache.dll放到phpext目錄下,如:

D:\wamp\bin\php\php5.5.12\ext

3. 開啟php.ini,在extension處新增一行程式碼:

extension=php_memcache.dll

4. 重啟伺服器。

5. 檢視phpextensions服務,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中的資訊,則說明phpmemcache擴充套件已安裝成功且能使用了!

注意:執行程式碼時若出現錯誤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指令解讀