Memcached的介紹、安裝和使用

1、Memcached介紹 php

一、什麼是Memcached? mysql

Memcached是國外社區網站LiveJournal的開發團隊開發的高性能的分佈式內存緩存服務器。通常的使用目的是,經過緩存數據庫查詢結果,減小數據庫訪問次數,以提升動態Web應用的速度、提升可擴展性。 sql

官方網站:http://memcached.org/ shell

二、Memcached的運行圖 數據庫


2、Memcached安裝和使用 apache

一、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


二、 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的各類信息


三、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)、PHPMemcache結合的測試代碼


<?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)、PHPMemcache分佈式:在一臺或者多臺機器啓用一個或者多個進程,這裏是在一臺機器啓用兩個進程,使用兩個接口:


/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);  
?> 
相關文章
相關標籤/搜索