PHP 雖然效能已經相當優異,但面對大量資料存取時,資料庫查詢往往成為效能瓶頸。引入 Memcache 記憶體快取機制,可將熱門資料暫存在記憶體中,大幅降低資料庫負載,讓網頁回應速度成倍提升。
Memcache 同時支援 Linux 與 Windows 環境,但生產環境強烈建議部署於 Linux 系統,穩定度與效能表現更佳。安裝教學網路上資源豐富,搜尋即可獲得完整步驟,這裡不再贅述。
<?php
// 建立連線
$mem = new Memcache;
$mem->connect("127.0.0.1", 11211) or die("Could not connect");
// 顯示版本資訊
$version = $mem->getVersion();
echo "Memcached Server version: " . $version . "<br>";
// 寫入資料(key、value、flag、expire)
$mem->set('key1', 'This is first value', 0, 60);
$val = $mem->get('key1');
echo "Get key1 value: " . $val . "<br>";
// 替換資料
$mem->replace('key1', 'This is replace value', 0, 60);
$val = $mem->get('key1');
echo "Get key1 value: " . $val . "<br>";
// 儲存陣列
$arr = array('aaa', 'bbb', 'ccc', 'ddd');
$mem->set('key2', $arr, 0, 60);
$val2 = $mem->get('key2');
echo "Get key2 value: ";
print_r($val2);
echo "<br>";
// 刪除單筆
$mem->delete('key1');
$val = $mem->get('key1');
echo "Get key1 value: " . $val . "<br>";
// 清空所有快取
$mem->flush();
$val2 = $mem->get('key2');
echo "Get key2 value: ";
print_r($val2);
echo "<br>";
// 關閉連線
$mem->close();
?>
<?php
$mc = memcache_connect('localhost', 11211);
$pn = $mc->get('pid');
echo $pn;
if ($pn < 1) $pn = 1;
else $pn++;
$mc->set('pid', $pn, 0, 0); // 0 代表永不過期
memcache_close($mc);
?>
product:123:detail),方便管理與除錯。get_hits、get_misses、hit_rate,確保快取命中率維持在 90% 以上。善用 Memcache,能讓 PHP 應用在高流量下依然保持毫秒級回應,是效能優化的關鍵利器。