1. 程式人生 > >Memcache學習總結1-Memcache與Memcached介紹及安裝配置

Memcache學習總結1-Memcache與Memcached介紹及安裝配置

也許大家一看到Memcache和Memcached會有點暈,這兩者有什麼關係又有什麼區別呢,下面先給大家說下Memcached,Memcached是一個高效能的分散式記憶體物件快取系統,用於動態Web應用以減輕資料庫負載。它通過在記憶體中快取資料和物件來減少讀取資料庫的次數,從而提高動態、資料庫驅動網站的速度。 

想必大家也聽說過Memcached,就是一個快取系統,我們可以把一些經常要查詢的資料放到快取中,避免每次要使用的時候都去查詢資料庫。這樣既能大幅的加快資料讀取速度,而且也降低了伺服器的壓力,所以一般大訪問量的網站都會用的Memcached。 

Memcached與Memcache的區別

至於Memcached和Memcache的區別,其實很簡單,一個是服務端,一個是客戶端,就像mysql一樣,我們在命令列裡輸入各種sql語句就能查詢到需要的結果,這就是客戶端,客戶端接收我們輸入的命令從服務端查詢,mysqld就是服務端,就是響應客戶端的額後臺程序,在這裡也一樣Memcached是服務端,而Memcache就是客戶端。 

所以我們要使用Memcached,首先在服務端安裝好Memcached,並執行Memcached,然後安裝Memcache就能使用了。 

在這裡我們會詳細的講解在Linux下安裝Memcached服務端,並講解通過PHP擴充套件安裝Memcache,以便我們直接通過PHP來測試Memcached。 

Memcached的安裝(Linux環境下)

由於Memcache用到了libevent這個庫用於Socket的處理,所以還需要安裝libevent,我們先把這兩個軟體都下載下來 
#1.分別把memcached和libevent下載回來,放到 /tmp 目錄下:
# cd /tmp
# wget <a target=_blank href="http://www.danga.com/memcached/dist/memcached-1.2.0.tar.gz" target="_blank" style="color: rgb(51, 119, 170); text-decoration: none;">http://www.danga.com/memcached/dist/memcached-1.2.0.tar.gz</a> 
# wget <a target=_blank href="http://www.monkey.org/~provos/libevent-1.2.tar.gz" target="_blank" style="color: rgb(51, 119, 170); text-decoration: none;">http://www.monkey.org/~provos/libevent-1.2.tar.gz</a> 

#2.先安裝libevent:
# tar zxvf libevent-1.2.tar.gz
# cd libevent-1.2
# ./configure --prefix=/usr
# make
# make install

#3.測試libevent是否安裝成功:
# ls -al /usr/lib | grep libevent
lrwxrwxrwx 1 root root 21 11?? 12 17:38 libevent-1.2.so.1 -> libevent-1.2.so.1.0.3
-rwxr-xr-x 1 root root 263546 11?? 12 17:38 libevent-1.2.so.1.0.3
-rw-r--r-- 1 root root 454156 11?? 12 17:38 libevent.a
-rwxr-xr-x 1 root root 811 11?? 12 17:38 libevent.la
lrwxrwxrwx 1 root root 21 11?? 12 17:38 libevent.so -> libevent-1.2.so.1.0.3
還不錯,都安裝上了。

#4.安裝memcached,同時需要安裝中指定libevent的安裝位置:
# cd /tmp
# tar zxvf memcached-1.2.0.tar.gz
# cd memcached-1.2.0
# ./configure --with-libevent=/usr
# make
# make install
如果中間出現報錯,請仔細檢查錯誤資訊,按照錯誤資訊來配置或者增加相應的庫或者路徑。
安裝完成後會把memcached放到 /usr/local/bin/memcached ,

#5.測試是否成功安裝memcached:
# ls -al /usr/local/bin/mem*
-rwxr-xr-x 1 root root 137986 11?? 12 17:39 /usr/local/bin/memcached
-rwxr-xr-x 1 root root 140179 11?? 12 17:39 /usr/local/bin/memcached-debug


好了,以上就把memcached安裝成功了 

下面安裝Memcache的PHP擴充套件

1.在http://pecl.php.net/package/memcache 選擇相應想要下載的memcache版本。 
2.安裝PHP的memcache擴充套件 
tar vxzf memcache-2.2.1.tgz
cd memcache-2.2.1
/usr/local/php/bin/phpize
./configure --enable-memcache --with-php-config=/usr/local/php/bin/php-config --with-zlib-dir
make
make install


3.上述安裝完後會有類似這樣的提示: 
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-2007xxxx/ 

4.把php.ini中的extension_dir = "./"修改為 
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-2007xxxx/" 

5.新增一行來載入memcache擴充套件:extension=memcache.so 

6、修改未配置後重啟PHP 

到這裡我們已經把Memcache的服務端和客戶端都安裝好了,下面我們來通過PHP做一個簡單地測試 

Memcache功能測試

首先我們得在服務端啟動已經安裝好的Memcached 
/usr/local/bin/memcached -d -m 10 -u root -l 127.0.0.1 -p 11211 -c 256 -P /tmp/memcached.pid 

引數說明: 
-d選項是啟動一個守護程序, 
-m是分配給Memcache使用的記憶體數量,單位是MB,我這裡是10MB, 
-u是執行Memcache的使用者,我這裡是root, 
-l是監聽的伺服器IP地址,如果有多個地址的話,我這裡指定了伺服器的IP地址192.168.0.200, 
-p是設定Memcache監聽的埠,我這裡設定了12000,最好是1024以上的埠, 
-c選項是最大執行的併發連線數,預設是1024,我這裡設定了256,按照你伺服器的負載量來設定, 
-P是設定儲存Memcache的pid檔案,我這裡是儲存在 /tmp/memcached.pid, 

然後編寫PHP測試: 

  1. < ?php  
  2. $mem = new Memcache;  
  3. $mem->connect("127.0.0.1", 11211); //此處的IP和埠號就是上一步我們啟動memcached指定的,否則會連線不上
  4. $mem->set('key''set a value', 0, 60);  
  5. $val = $mem->get('key');  
  6. echo$val;  
  7. ?>