也許大家一看到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。
由於Memcache用到了libevent這個庫用於Socket的處理,所以還需要安裝libevent
1、安裝libeven
1 [root@lys2 src]# wget http://www.monkey.org/~provos/libevent-1.4.13-stable.tar.gz 2 [root@lys2 src]# tar zxvf libevent-1.4.13-stable.tar.gz 3 [root@lys2 src]# cd libevent-1.4.13-stable 4 [root@lys2 libevent-1.4.13-stable]# ./configure 5 [root@lys2 libevent-1.4.13-stable]# make && make install
1 [root@lys2 libevent-1.4.13-stable]# rpm -qa libevent 2 libevent-1.4.13-4.el6.x86_64
2、安裝memcached
1 [root@lys2 src]# wget http://memcached.org/files/memcached-1.4.32.tar.gz 2 [root@lys2 src]# tar zxvf memcached-1.4.32.tar.gz 3 [root@lys2 src]# cd memcached-1.4.32 4 [root@lys2 memcached-1.4.32]# ./configure 5 [root@lys2 memcached-1.4.32]# make && make install
安裝完成后,memcached的默認目錄為/usr/local/bin/memcached
1 [root@lys2 memcached-1.4.32]# ll /usr/local/bin/memcached 2 -rwxr-xr-x 1 root root 446185 10月 16 10:03 /usr/local/bin/memcached
3、啟動memcached
1 [root@lys2 memcached-1.4.32]# /usr/local/bin/memcached -m 32m -p 11211 -d -u root -P /var/run/memcached.pid -c 256 -vv
參數說明:
-d選項是作為守護進程在后台運行 -m是分配給Memcache使用的內存數量,單位是MB,我這里是10MB, -u是運行Memcache的用戶,我這里是root, -l是監聽的服務器IP地址,如果有多個地址的話 -p是設置Memcache監聽的端口,我這里設置了12000,最好是1024以上的端口, -c選項是最大運行的並發連接數,默認是1024,我這里設置了256,按照你服務器的負載量來設定, -P是設置保存Memcache的pid文件 -vv是以very vrebose模式啟動,將調試信息和錯誤輸出到控制台
1 [root@lys2 memcached-1.4.32]# netstat -unlpt | grep 11211 2 tcp 0 0 0.0.0.0:11211 0.0.0.0:* LISTEN 10449/memcached 3 tcp 0 0 :::11211 :::* LISTEN 10449/memcached 4 udp 0 0 0.0.0.0:11211 0.0.0.0:* 10449/memcached 5 udp 0 0 :::11211 :::* 10449/memcached
關閉memcached的命令為:
1 [root@lys2 memcached-1.4.32]# kill `cat /var/run/memcached.pid`
4、安裝memcache的php擴展
1 [root@lys2 src]# wget http://pecl.php.net/get/memcache-2.2.7.tgz 2 [root@lys2 src]# tar zxvf memcache-2.2.7.tgz 3 [root@lys2 src]# cd memcache-2.2.7 4 [root@lys2 memcache-2.2.7]# /usr/local/php/bin/phpize 5 Configuring for: 6 PHP Api Version: 20131106 7 Zend Module Api No: 20131226 8 Zend Extension Api No: 220131226 9 [root@lys2 memcache-2.2.7]# ./configure --enable-memcache --with-php-config=/usr/local/php/bin/php-config 10 [root@lys2 memcache-2.2.7]# make && make install
安裝完成后會有以下提示
1 Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/
修改php.ini文件,把php.ini中的extension_dir='./' 修改為extension_dir='/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/'
添加如下一行代碼來載入memcache擴展:
1 extension=memcache.so
5、測試memcache的php擴展是否安裝成功
運行下面的php代碼,如果輸出“hello world”,就表示環境搭建成功
<?php $mem = new Memcache; $mem->connect("127.0.0.1", 11211); $mem->set('test','hello world',0,12); $val = $mem->get('test'); echo $val; ?>
1 [root@lys2 data]# /usr/local/php/bin/php test.php 2 hello world