天天看點

memcache與memcached的差別與安裝

Memcache是什麼? 

Memcache是一個自由和開放源代碼、高性能、配置設定的記憶體對象緩存系統。用于加速動态web應用程式,減輕資料庫負載。 

它可以應對任意多個連接配接,使用非阻塞的網絡IO。由于它的工作機制是在記憶體中開辟一塊空間,然後建立一個HashTable,Memcached自管理這些HashTable。

Memcached是簡單而強大的。它簡單的設計促進迅速部署,易于發展所面臨的問題,解決了很多大型資料緩存。它的API可供最流行的語言。

Memcache的知名使用者有:LiveJournal、Wikipedia、Flickr、Bebo、Twitter、Typepad、Yellowbot、Youtube 等。

Memcached又是什麼?

Memcache是該系統的項目名稱,Memcached是該系統的主程式檔案,以守護程式方式運作于一個或多個伺服器中,随時接受用戶端的連接配接操作,使用共享記憶體存取資料。

那PHP中的Memcache是什麼? 

php中的所講的memcache是用于連接配接Memecached的用戶端元件。

Memcache如何安裝?

Memcached 服務端安裝:(源碼包官方網站下載下傳)

系統指令

tar xvf memcached-1.2.6.tar.gz   

cd memcached-1.2.6   

./configure --prefix=/usr/local/memcached   

make    

make install  

然後就可以啟動memcached的守護程序了:

/usr/local/memcached/bin/memcached -p 11211 -l 127.0.0.1 -d -u nobody -P /var/run/memcached.pid -m 64M -c 1024  

幾個參數的解釋:

-p memcached監聽的TCP端口

-l 監聽的ip位址,127.0.0.1是本機,當然也可以寫上你的伺服器IP,如:61.150.91.26,這是我伺服器的IP位址,如果你需要多個伺服器都能夠讀取這台memcached的緩存資料,那麼就必須設定這個ip

-d 以daemon方式運作,将程式放入背景

-u memcached的運作使用者,我設定的是nobody

-P memcached的pid檔案路徑

-m memcached可以使用的最大記憶體數量

-c memcached同時可以接受的最大的連接配接數

如果你希望以socket方式來通路memcached,那麼在啟動的時候就必須去掉 -l和-p參數,并加上-s參數:

-s memcached的socket檔案路徑

php中memcache擴充元件的安裝:

tar xvf memcache-3.0.3.tgz   

cd memcache-3.0.3   

/usr/local/php5/bin/phpize   

./configure --with-php-config=/usr/local/php5/bin/php-config --enable-memcache   

make   

    按照我的環境,編譯出來的memcache.so儲存在 /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/ 目錄下,如果你的環境不一樣,你得根據自己情況修改你的php.ini了。

接着要做的工作就是讓php加載這個擴充,編輯你的php.ini,在适當位置(通常是最後,也可以是獨立的一個ini檔案)加入如下行:

 extension=memcache.so

然後重新開機你的phpfastcgi程序或者apache,運作一個phpinfo()來确認一下,正常的話你應該可以看到這個了:memcache

php-memcache的簡單使用舉例:

<?php  

$memcache = new Memcache;  

$memcache->connect('127.0.0.1','11211');  

$memcache->setCompressThreshold(20000, 0.2);   

echo $memcache->getVersion();                  

$test = array(1,2,3,4,5,'abcde');              

if($memcache->get('test')){  

        print_r($memcache->get('test'));      

        echo "\n";  

        echo 'cached';  

}else{  

        $memcache->set('test',$test,0,30);     

        echo 'no cache';  

}  

?> 

本文轉自leonardos51CTO部落格,原文連結:http://blog.51cto.com/leomars/395417 ,如需轉載請自行聯系原作者