Memcached的介紹、安裝和使用
一、Memcached介紹
1、什么是Memcached?
Memcached是國外社區網站LiveJournal的開發團隊開發的高性能的分布式內存緩存服務器。一般的使用目的是,通過緩存數據庫查詢結果,減少數據庫訪問次數,以提高動態Web應用的速度、提高可擴展性。
2、Memcached的運行圖
二、Memcached安裝和使用
1、Memcached安裝
安裝步驟:先安裝libevent,再安裝Memcached主程序
安裝libevent:
yum –y install libevent*
再安裝Memcached:
tar -xzf memcached-1.4.10.tar.gz cd memcached-1.4.10 ./configure --prefix=/usr/local/memcache make && make install useradd memcache passwd memcache
2、 Memcached運行
啟動Memcached:
/usr/local/memcache/bin/memcached -p 11211 -u memcache &
關閉服務:
kill %1 #1表示為后臺服務的數字標識
查看Memcached幫助信息:
/usr/local/memcache/bin/memcached –h
檢查是否正常啟動:
ps –aux | grep memcached 或 netstat –tunpl | grep :11211 或 telnet 192.168.10.1 11211 #測試連接狀態 stats #統計Memcached的各種信息
3、Memcached和PHP結合使用
(1)、需要安裝PHP Memcache擴展
編譯安裝memcache
tar zxvf memcache-2.2.5.tgz cd memcache-2.2.5 /usr/local/php/bin/phpize ./configure --with-php-config=/usr/local/php/bin/php-config make && make install
配置:
ls -l /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/memcache.so vi /usr/local/php/etc/php.ini
新增以下配置內容:
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/" extension="memcache.so"
檢查安裝結果:
/usr/local/php/bin/php –m /usr/local/apache2/bin/apachectl restart
(2)、PHP和Memcache結合的測試代碼
<?php //連接memcache $mem = new Memcache; $mem->connect('localhost',11211); //保存數據 $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('aa','bb','cc'); $mem->set('key2',$arr,0,60); $val2 = $mem->get('key2'); echo "Get key2 value:"; echo "<pre>"; print_r($val2); //關閉連接 $mem->close(); ?>
(3)、PHP和Memcache分布式:在一臺或者多臺機器啟用一個或者多個進程,這里是在一臺機器啟用兩個進程,使用兩個接口:
/usr/local/memcache/bin/memcached –u memcache –p 11211 & /usr/local/memcache/bin/memcached –u memcache –p 11212 & /usr/local/memcache/bin/memcached –u memcache –p 11213&
示例代碼:
<?php //連接memcache $mem = new Memcache; $mem->addServer('localhost',11211); $mem->addServer('localhost',11212); $mem->addServer('localhost',11213); //保存數據 $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('aa','bb','cc'); $mem->set('key2',$arr,0,60); $val2 = $mem->get('key2'); echo "Get key2 value:"; echo "<pre>"; print_r($val2); echo "</pre>"; //關閉連接 $mem->close(); ?>
另外,PHP作為memcached客戶端實現起來很簡單,在實際應用中,通常會把數據庫查詢的結果集保存到 memcached 中,下次訪問時直接從 memcached 中獲取,而不再做數據庫查詢操作,這樣可以在很大程度上減輕數據庫的負擔。通常會將 SQL 語句 md5() 之后的值作為唯一標識符 key。
下邊是一個利用 memcached 來緩存數據庫查詢結果集的示例:
<?php $mc = new memcached(); $sql = 'SELECT * FROM users'; $key = md5($sql); //memcached 對象標識符 if ( !($datas = $mc->get($key)) ) { // 在 memcached 中未獲取到緩存數據,則使用數據庫查詢獲取記錄集。 echo "n".str_pad('Read datas from MySQL.', 60, '_')."n"; $conn = mysql_connect('localhost', 'test', 'test'); mysql_select_db('test'); $result = mysql_query($sql); while ($row = mysql_fetch_object($result)) $datas[] = $row; // 將數據庫中獲取到的結果集數據保存到 memcached 中,以供下次訪問時使用。 $mc->add($key, $datas); } else { echo "n".str_pad('Read datas from memcached.', 60, '_')."n"; } var_dump($datas); ?>
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!