memcache和memcached的區別
memcached技術,這個很容易理解這是memcached是內存緩存,但是怎麼還有memcache呢?
其實很簡單,memcache是php的一個擴展,用於php管理memcached,php-memcache.dll。
(1)如果安裝了memcached不安裝擴展,那麼php無法操控memcached,但是命令行使用起來沒有問題
(2)如果安裝了memcache擴展但是沒有安裝memcached服務,那麼這個就無法使用
(3)只有同時安裝了memcached服務和memcache擴展才可以在PHP中使用memcached提高動態網站性能
一、安裝過程:1、下載memcache的windows64版本
2. 解壓下載後的文件,把它放到一個目錄中,如D:\memcached。
3. 打開cmd,進入memcached解壓後存放的目錄,運行命令:
memcached.exe -d install
4、測試是否安裝成功:
打開cmd,進入memcached解壓後存放的目錄,運行命令:
memcached -h,若安裝成功,會出現如下界面:
5. 啓動memcached:
打開cmd,進入memcached解壓後存放的目錄,運行命令
memcached -m30 -llcoalhost -p9000 -d start
這時memcached已經啓動,在任務管理器中可以看到這個進程:
6、memcache 的基本設置
Memcached 的基本設置 , 可以使用memcached -d ,而不需要memcached.exe -d
-p 監聽的端口-l 連接的IP地址,默認是本機-d start 啓動memcached服務-d restart 重啓memcached 服務-d stop|shutdown 關閉正在運行的memcached服務-d install 安裝memcached服務-d uninstall 卸載memcached 服務-u 以xx的身份運行(僅在root運行的時候有效)-m 最大內存使用,單位MB,默認是64MB,最大好像2G-M 內存耗盡時返回錯誤,而不是刪除項-c 最大同時連接數,默認是1024-f 塊大小增長因子,默認是1.25-n 最小分配空間 key+value+flags 默認是48-h 顯示幫助
7、連接memcache
打開cmd,運行命令:
telnet 127.0.0.1 11211
即可連接Memcached。
注:
(1)win7中可能會出現“telnet’不是內部或外部命令”的錯誤,這是因爲系統中默認沒有安裝telnet的緣故,可在“控制面板”->“程序”->“程序和功能”->“打開或關閉Windows功能”中打開“Telnet客戶端”
(2)在使用telnet 過程中,可能會出現:”該指令無效”,原因是沒有回車,
A. Telnet localhost 11211 【回車】
B. Ctrl + 】 打開回顯功能
C. 回車
二、memcached常用的控制指令
(1)常用指令如下
命令 |
描述 |
例子 |
get |
獲取一個key值 |
Get mykey |
set |
設置一個key值 如果key值存在,更新 如果key值不存在,添加 |
Set mykey 0 60 5 0(壓縮標識)60(時間,秒)5(字符長度) |
add |
增加一個key值 如果值存在是要失敗的 |
Add newkey 0 60 5 回車之後,輸入5個字符長度的數據 |
replace |
重寫一個存在的key值 如果這個key 不存在是要報錯的 |
Replace key 0 60 5 和set類似,卻別在於該變量不存在則不能存儲 |
append |
追加一個數據到存在的key值的後面 Hello helloworld |
Append key 0 60 15 |
Prepend |
追加一數據到存在的key值的前面 |
Prepend key 0 60 15 |
Incr |
給key值加數 只有當key值是數字纔可以加減 |
Incr mykey 2 |
Decr |
給key值減數 只有當key值是數字纔可以加減 |
Decr mykey 5 |
Delete |
刪除一個key |
Delete mykey |
Flush_all |
清除所有key |
Flush_all |
在一段時間(秒)後清除key |
Flush_all 900 |
|
stats |
|
Stats |
|
Stats slabs |
|
|
Stats malloc |
|
|
Stats detail |
|
|
Stats sizes |
|
|
Stats reset |
|
version |
|
Version |
Verbosity |
|
Verbosity |
quit |
|
quit |
(2)stats 的詳細解釋
Pid |
Memcache服務器的進程ID |
Uptime |
服務器已經運行的秒數 |
Time |
服務器當前的unix時間戳 |
Version |
Memcache版本 |
Pointer_size |
當前操作系統的指針(32位系統一般是32bit) |
Rusage_user |
進程累計用戶時間 |
Rusage_system |
進程的累計系統時間 |
Curr_items |
服務器當前存儲的items數量 |
Total_items |
從服務器啓動後存儲的items總數量 |
Bytes |
當前服務器存儲items佔用的字節數 |
Curr_connections |
當前打開着的連接數 |
Total_connections |
從服務器啓動以後曾經打開過的連接數 |
Connection_structures |
服務器分類的連接構造數 |
Cmd_get |
Get命令(獲取)總請求次數 |
Cmd_set |
Set命令(保存)總請求次數 |
Get_hits |
總命中次數 |
Get_misses |
總未命中次數 |
Evictions |
爲獲取空閒內存而刪除的items 數(分配給memcache的空間用滿後需要刪除舊的items來得到空間分配給新的items) |
Bytes_read |
總讀取字節數(請求字節數) |
bytes_written |
總髮送字節數(結果字節數) |
limit_maxbytes |
分配給memcache的內存大小(字節) |
threads |
當前線程數 |
Stats items 查看變量的數量,以及變量的狀態Stats cachedump 1 1 [1:指的是壓縮時候的標記,後面的1表示的是查看第一條,不是查看第一條裏面的記錄]、Stats cachedump 1 0 [0:指的是查看所有memcache中存儲的變量]
三、安裝memcache的php擴展:
下載地址:
http://windows.php.net/downloads/pecl/releases/memcache 進入相關下載頁面(下載相關版本)
(1)將下載的php_memcache.dll (根據php的相應版本)放到php的安裝目錄ext 下
(2)在php.ini 中配置 extension = php_memcache.dll 擴展
如果打開phpinfo()頁面沒有看到memcached說明沒有安裝成功
下載的php_memcache.dll 一定要與當前的php版本一致才能安裝成功
若能打印出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這個文件。
(3)Memcache在php中的使用分爲三部分
memcache擴展(php_memcache.dll),memcached擴展(php_memcached.dll),socket操作
①memcache擴展
下載相應版本的php_memcache.dll擴展,在php.ini中配置extension=php_memcache.dll
$mem = new Memcache;$mem ->connect('localhost' , 11211);//連接memcache緩存服務器 , pconnect()長連接,不會因爲close而關閉
$mem ->add('demo' , 'hello world!' , false , 30);//插入數據
$demo = $mem ->get('demo');//取出數據
echo "demo的值是:".$demo."<br/>";
$mem->add('num' , 9 , false , 30);
$mem->increment('num' , 1);//將內存中的num 加1
$mem ->decrement('num' , 2);//將內存中的num減1 , 減的數字最小爲0
$mem ->delete('num');//刪除內存中的num$mem ->flush();//清空內存中所有的變量
$mem ->set('a' , '劉德華' , false , 30);//修改一個變量,當變量不存在時,增加
echo $mem ->get('a');
$mem ->replace('b' ,'demored' , false , 30);//替換一個已經存在的變量,變量不存在不作任何操作
echo $mem->get('b');$mem ->close();//關閉memcache
②Memcached 擴展
下載相應版本的php_memcache.dll
③Socket
使用 memcache-client.php 來使用socket 網絡編程來使用memcache , 用法和memcache擴展類似