# cd libevent-1.1a
# ./configure --prefix=/usr
# make
# make install
# cd ..
# tar -xzf memcached-1.1.12.tar.gz
# cd memcached-1.1.12
# ./configure --prefix=/usr
# make
# make install安裝完成之後,memcached 應該在 /usr/bin/memcached。三、執行 memcached 守護程式執行 memcached 守護程式很簡單,只需乙個命令列即可,不需要修改任何配置檔案(也沒有配置檔案給你修改):/usr/bin/memcached -d -m 128 -l 192.168.1.1 -p 11211 -u httpd引數解釋:-d 以守護程式(daemon)方式執行 memcached;
-m 設定 memcached 可以使用的記憶體大小,單位為 m;
-l 設定監聽的 ip 位址,如果是本機的話,通常可以不設定此引數;
-p 設定監聽的埠,預設為 11211,所以也可以不設定此引數;
往 memcached 中寫入物件,$key 是物件的唯一識別符號,$val 是寫入的物件資料,$exp 為過期時間,單位為秒,預設為不限時間;get ($key)
從 memcached 中獲取物件資料,通過物件的唯一識別符號 $key 獲取;replace ($key, $value, $exp=0)
使用 $value 替換 memcached 中識別符號為 $key 的物件內容,引數與 add() 方法一樣,只有 $key 物件存在的情況下才會起作用;delete ($key, $time = 0)
刪除 memcached 中識別符號為 $key 的物件,$time 為可選引數,表示刪除之前需要等待多長時間。下面是一段簡單的測試**,**中對識別符號為 』mykey』 的物件資料進行訪問操作:
// 包含 memcached 類檔案
require_once(』memcached-client.php』);
// 選項設定
$options = array(
』servers』 => array(』192.168.1.1:11211』), //memcached 服務的位址、埠,可用多個陣列元素表示多個 memcached 服務
』debug』 => true, //是否開啟 debug
』compress_threshold』 => 10240, //超過多少位元組的資料時進行壓縮
』persistant』 => false //是否使用持久連線
); // 建立 memcached 物件例項
$mc = new memcached($options);
// 設定此指令碼使用的唯一識別符號
$key = 』mykey』;
// 往 memcached 中寫入物件
$mc->add($key, 』some random strings』);
$val = $mc->get($key);
echo "n".str_pad(』$mc->add() 』, 60, 』_』)."n";
var_dump($val);
// 替換已寫入的物件資料值
$mc->replace($key, array(』some』=>』haha』, 』array』=>』***』));
$val = $mc->get($key);
echo "n".str_pad(』$mc->replace() 』, 60, 』_』)."n";
var_dump($val);
// 刪除 memcached 中的物件
$mc->delete($key);
$val = $mc->get($key);
echo "n".str_pad(』$mc->delete() 』, 60, 』_』)."n";
var_dump($val);
?>是不是很簡單,在實際應用中,通常會把資料庫查詢的結果集儲存到 memcached 中,下次訪問時直接從 memcached 中獲取,而不再做資料庫查詢操作,這樣可以在很大程度上減輕資料庫的負擔。通常會將 sql 語句 md5() 之後的值作為唯一識別符號 key。下邊是乙個利用 memcached 來快取資料庫查詢結果集的示例(此**片段緊接上邊的示例**):
$sql = 』select * from users』;
$key = md5($sql); //memcached 物件識別符號
var_dump($datas);
?>可以看出,使用 memcached 之後,可以減少資料庫連線、查詢操作,資料庫負載下來了,指令碼的執行速度也提高了。之前我曾經寫過一篇名為《php 實現多伺服器共享 session 資料》文章,文中的 session 是使用資料庫儲存的,在併發訪問量大的時候,伺服器的負載會很大,經常會超出 mysql 最大連線數,利用 memcached,我們可以很好地解決這個問題,工作原理如下:
使用者訪問網頁時,檢視 memcached 中是否有當前使用者的 session 資料,使用 session_id() 作為唯一識別符號;如果資料存在,則直接返回,如果不存在,再進行資料庫連線,獲取 session 資料,並將此資料儲存到 memcached 中,供下次使用;
當前的 php 執行結束(或使用了 session_write_close())時,會呼叫 my_sess::write() 方法,將資料寫入資料庫,這樣的話,每次仍然會有資料庫操作,對於這個方法,也需要進行優化。使用乙個全域性變數,記錄使用者進入頁面時的 session 資料,然後在 write() 方法內比較此資料與想要寫入的 session 資料是否相同,不同才進行資料庫連線、寫入資料庫,同時將 memcached 中對應的物件刪除,如果相同的話,則表示 session 資料未改變,那麼就可以不做任何操作,直接返回了;
五、相關資源
memcached 官方**
php memcached client
本文**
Windows下安裝php的Memcache模組
一 安裝memcached.exe 2 進入d盤根目錄,在命令列狀態下輸入 d memcached.exe d install 至此memcached已經安裝成windows服務 3 在命令列下輸入 d memcached.exe d start 以啟動memcached服務,以後此服務將隨開機啟動...
Linux下快取伺服器的應用 Memcached
1 安裝memcached 2 安裝memcache php模組 3 測試指令碼 四 關於本文 正文 一 環境需求 安裝memcached需要libevent庫的支援,所以請在安裝memcached之前檢查有沒有安裝libevent。測試環境還需要php的支援,本文假設php已經安裝到 usr lo...
window下安裝php7的memcache擴充套件
安裝memcache 1.4.4 c memcached memcached.exe d install c memcached memcached.exe d start c memcached memcached.exe d stop 1.4.5 schtasks create sc onsta...