Mem:memory縮寫(內存):內存緩存
1、 斷電或者重啟服務器內存數據即消失,即臨時數據;
Memcache默認端口:11211
存入方式:key=>>value lengh(長度) time(過期時間)
注意:不只是字符串,視頻,聲音,圖片,文字等等都可以存;
對比:
Apache –消耗Cpu,用的內存很少
Memcache-消耗內存比較多,CPU消耗較少
Memcache的安裝
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()方法實現;