一、Memcached和Memcache的區別:
網上關於Memcached和Memcache的區別的理解衆說紛紜,我個人的理解是:
Memcached是一個內存緩存系統,而Memcache是php的一個擴展,是php用於操作和管理Memcached的工具。如果安裝了Memcached但沒有安裝Memcache,php無法操控Memcached,但是可以使用命令行來操控Memcached;如果安裝了Memcache卻沒安裝Memcached,則無法使用。只有同時安裝了Memcached和Memcache,才能在PHP中使用Memcached。
二、安裝memcached:
1.由於memcached比較小,所以解壓開就可以使用.
2.解壓完後爲了方便在命令行裏進行操作,我們將其加入環境變量當中.
3.測試是否安裝成功:
打開cmd,進入memcached解壓後存放的目錄,運行命令:
memcached -h,若安裝成功,會出現如下界面:
4.啓動memcached:
Memcached客戶端與服務器端的通信比較簡單,使用的基於廣西的協議,而不是二進制協議.(http協議也是這樣),因爲此勻通過telnet即可與memcached作交互.
打開命令行 打開telnet
命令格式:telnet host 端口
telnet 127.0.0.1 11211
三、練習
1.Memcached的命令
分增刪改查4類,沿着這個思路來學習.
語法:add key flag expire length
key 給值起一個獨特的名字
flag 標誌,要求爲一個正整數
expire 有效期
length 緩存的長度(字節爲單位)
flag 的意義:
memcached 基本文本協議,傳輸的東西,理解成字符串來存儲.
想:讓你存一個 php 對象,和一個 php 數組,怎麼辦?
答:序列化成字符串,往出取的時候,自然還要反序列化成 對象/數組/json 格式等等.
這時候, flag 的意義就體現出來了.
比如, 1 就是字符串, 2 反轉成數組 3,反序列化對象…..
expire 的意義:
設置緩存的有效期,有 3 種格式
1:設置秒數, 從設定開始數,第 n 秒後失效.
2:時間戳, 到指定的時間戳後失效.
比如在團購網站,緩存的某團到中午 12:00 失效. add key 0 1379209999 6
3: 設爲 0. 不自動失效.
注: 有種誤會,設爲 0,永久有效.錯誤的.
1:編譯 memcached 時,指定一個最長常量,默認是 30 天.
所以,即使設爲 0,30 天后也會失效.
2:可能等不到 30 天,就會被新數據擠出去.
delete 刪除
delete key [time seconds]
刪除指定的 key. 如加可選參數 time,則指刪除 key,並在刪除 key 後的 time 秒內,不允許
get,add,replace 操作此 key.
replace 替換
replace key flag expire length
參數和 add 完全一樣,不單獨寫
get 查詢
get key
返回 key 的值
set 是設置和修改值
參數和 add ,replace 一樣,但功能不一樣.
如下比較:
用 add 時, key 不存在,才能建立此鍵值.
但對於已經存在的鍵,可以用 replace 進行替換/更改
repalce,key 存在時,才能修改此鍵值,如上圖,date 不存在,則沒改成功.
而 set 想當於有 add replace 兩者的功能.
set key flag expire leng 時
如果服務器無此鍵 —-> 增加的效果
如果服務器有此鍵 —-> 修改的效果.
如下圖的演示,該圖中,name 是已經存在,而 date 原本不存在. set 都可以成功設置他們.