memcache與memcached的區別與安裝

科技小能手發表於2017-11-12

轉自:http://blog.sina.com.cn/s/blog_5378b2830100figs.html

memcache與memcached的區別與安裝
2010年02月02日 星期二 下午 03:31

Memcache是什麼?

Memcache是一個自由和開放原始碼、高效能、分配的記憶體物件快取系統。用於加速動態web應用程式,減輕資料庫負載。 

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

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

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

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

Memcached又是什麼?
Memcache是該系統的專案名稱,Memcached是該系統的主程式檔案,以守護程式方式執行於一個或多個伺服器中,隨時接受客 戶端的連線操作,使用共享記憶體存取資料。

那PHP中的Memcache是什麼?

php中的所講的memcache是用於連線Memecached的客戶端元件。

 

Memcache如何安裝?

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

系統命令
  1. tar xvf memcached-1.2.6.tar.gz   
  2. cd memcached-1.2.6   
  3. ./configure –prefix=/usr/local/memcached   
  4. make    
  5. make install  

 

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

系統命令
  1. /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擴充套件元件的安裝:

系統命令
  1. tar xvf memcache-3.0.3.tgz   
  2. cd memcache-3.0.3   
  3. /usr/local/php5/bin/phpize   
  4. ./configure –with-php-config=/usr/local/php5/bin/php-config –enable-memcache   
  5. make   
  6. make install  

 

    按照我的環境,編譯出來的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程式碼
  1. <?php   
  2.   
  3. $memcache = new Memcache;   
  4. $memcache->connect(`127.0.0.1`,`11211`);   
  5. $memcache->setCompressThreshold(20000, 0.2);    // 設定壓縮   
  6. echo $memcache->getVersion();                   // 輸出memcached版本   
  7.   
  8. $test = array(1,2,3,4,5,`abcde`);               //生成一個陣列   
  9.   
  10. if($memcache->get(`test`)){   
  11.         print_r($memcache->get(`test`));        //獲取資料   
  12.         echo 
    ;   
  13.         echo `cached`;   
  14.         echo 
    ;   
  15. }else{   
  16.         $memcache->set(`test`,$test,0,30);      //寫入資料   
  17.         echo `no cache`;   
  18.         echo 
    ;   
  19. }   
  20. ?>  

 


 

本文轉自holy2009 51CTO部落格,原文連結:http://blog.51cto.com/holy2010/414028



相關文章