PHP之Memcache緩存詳解


 

   Mem:memory縮寫(內存):內存緩存

 

1、  斷電或者重啟服務器內存數據即消失,即臨時數據;

Memcache默認端口:11211

存入方式:key=>>value    lengh(長度)   time(過期時間)

注意:不只是字符串,視頻,聲音,圖片,文字等等都可以存;

對比:

Apache –消耗Cpu,用的內存很少

Memcache-消耗內存比較多,CPU消耗較少 

 

Memcache的安裝

如果安裝了memcached不安裝擴展,那么php無法操控memcached,但是命令行使用起來沒有問題,如果安裝了memcache擴展但是沒有安裝memcached服務,那么這個就無法使用 ,只有同時安裝了memcached服務和memcache擴展才可以在PHP中使用memcached提高動態網站性能

windows 安裝memcached

1、安裝擴展:下載后解壓(鏈接:http://pan.baidu.com/s/1gdWDjMz 密碼:6isi)

  選擇合適的版本,把php_memcache.dll放到php的ext目錄子下,在php.ini中添加一行代碼:extension=php_memcache.dll。重啟服務

2、安裝服務:下載地址: http://www.2cto.com/uploadfile/2012/0713/20120713110308123.zip

    將下載好的文件解壓到某個文件夾下,打開cmd命令行,進入memcached目錄,執行memcached -d install命令,安裝服務。

     如果在沒有安裝過的情況下,出現"failed to install service or service already installed"錯誤,可能是cmd.exe需要用管理員身份運行。

    

3、啟動服務,執行memcached -d start

4、參數介紹

     -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 顯示幫助

 

 

連接到memcache   命令行:telnet 127.0.0.1 11211

<?php

Echo phpinfo();

?>

 

實例:

<?php

$mem = new Memcache;

$mem->connect("127.0.0.1", 12000);

//Memcache::set方法有四個參數,第一個參數是key,第二個參數是value,第三個參數可選,表示是否壓縮保存,第四個參數可選,用來設置一個過期自動銷毀的時間。

$mem->set('test','123',0,60);

//Memcache::add方法的作用和Memcache::set方法類似,區別是如果 Memcache::add方法的返回值為false,表示這個key已經存在,而Memcache::set方法則會直接覆寫。

$mem->add('test','123',0,60);

//Memcache::get方法的作用是獲取一個key值,Memcache::get方法有一個參數,表示key。

$mem->get('test');//輸出為'123'

//Memcache::replace 方法的作用是對一個已有的key進行覆寫操作,Memcache::replace方法有四個參數,作用和Memcache::set方法的相同。

$mem->replace('test','456',0,60);

//Memcache::delete方法的作用是刪除一個key值,Memcache::delete方法有兩個參數,第一個參數表示key,第二個參數可選,表示刪除延遲的時間。

$mem->delete('test',60);

?>

 

對於內存緩存,比較常用的有兩種memcache和memcached擴展,而memcache和memcached的守護進程mencached同名,容易混淆

a、Memcache是完全在PHP框架內開發的

b、Memcached是使用libmemcached的

c、Memcached會比memcache多幾個方法,使用方式上都差不多

d、memcache是原生實現的,支持OO和非OO兩套接口並存,而memcached是使用libmemcached,只支持OO接口。更多關於他們的區別,請參考:http://hi.baidu.com/dong_love_yan/blog/item/afbe1e12d22e7512203f2e21.html

memcached ,還有個值得陳贊的地方,就是flag不用再操作的時候設置了,可以通過一個統一的setOption()方法實現;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM