PHP與memcached實戰
阿新 • • 發佈:2019-02-05
Memcached 是一個高效能的分散式記憶體物件快取系統,用於動態Web應用以減輕資料庫負載。它通過在記憶體中快取資料和物件來減少讀取資料庫的次數,從而提高動態、資料庫驅動網站的速度。Memcached基於一個儲存鍵/值對的hashmap。其守護程序(daemon )是用C寫的,但是客戶端可以用任何語言來編寫,並通過memcached協議與守護程序通訊。
PHP使用Memcached的基本步驟
環境:
伺服器:CentOS 6.4
PHP版本:5.6.30
1、編譯安裝memcached系統服務
從http://memcached.org/下載memcached,然後進行編譯安裝
2、編譯安裝memcache擴充套件
從pecl.php.net網址下載擴充套件,並進行編譯安裝,形成.so的檔案,然後把.so的檔案路徑新增到php.ini中,然後重啟php-fpm
3、學習memcached的簡單命令
前臺啟動:./bin/memcached -u nobody -p 11211 -m 64 -vvv
後臺啟動:./bin/memcached -u nobody -p 11211 -m 64 -vvv &
4、實戰案例:實現隔5秒去查詢資料庫
可以參考php手冊中的memcache擴充套件Api
<?php
$mem = new Memcache();
$mem ->connect('localhost',11211);
$users = $mem->get('users');//從memcached中讀取users資料
if(empty($users)){
$dsn = 'mysql:host=localhost;dbname=test';
$pdo = new PDO($dsn,'root','1234');
$sql = 'select * from user;';
$st = $pdo->prepare($sql);
$st->execute();
$users = $st-> fetchAll(PDO::FETCH_ASSOC);
$mem->add('users',$users,false,5);//將users資料新增到memcached中並儲存5秒
echo 'from mysql'.'<br/>';
}else{
echo 'from cache'.'<br/>';
}
print_r($users);
?>
思路:
建立一個memcache的物件,然後連線到memcached伺服器上,首先從memcached中讀取是否存在users資料,如果不存在,就連線資料庫伺服器,然後查詢資料,並將資料儲存到memcached中,最後進行輸出。
效果圖: