Memcache 是一個高性能的分佈式內存對象緩存系統,用於動態Web應用以減輕數據庫負載。它經過在內存中緩存數據和對象來減小讀取數據庫的次數,從而提升了網站訪問的速度。 MemCaChe是一個存儲鍵值對的HashMap,在內存中對任意的數據(好比字符串、對象等)所使用的key-value存儲,數據能夠來自數據庫調用、API調用,或者頁面渲染的結果。MemCache設計理念就是小而強大,它簡單的設計促進了快速部署、易於開發並解決面對大規模的數據緩存的許多難題,而所開放的API使得MemCache能用於Java、C/C++/C#、Perl、Python、PHP、Ruby等大部分流行的程序語言。數據庫是是將數據存放在硬盤中,所以讀取的速度會相對於將數據存儲在內存中的memcache來講慢。javascript
傳統的Web應用都將數據保存到RDBMS中,應用服務器從RDBMS中讀取數據、處理數據並在瀏覽器中顯示。可是隨着數據量增大、訪問的集中、就會出現RDBMS的負擔加劇、數據庫響應變慢、致使整個系統響應延遲增長。而memcached就是爲了解決這個問題而出現的,memcached是一款高性能的分佈式內存緩存服務器,通常目的是爲了經過緩存數據庫的查詢命中減小數據庫壓力、提升應用響應速度、提升可擴展性。php
tar zxf memcache-2.2.5.tgzhtml
vim ~/.bash_profilejava
PATH=$PATH:$HOME/bin:/usr/local/lnmp/mysql/bin:/usr/local/lnmp/php/bin
source ~/.bash_profile ##刷新環境變量mysql
phpize是用來擴展php擴展模塊的,經過phpize能夠創建php的外掛模塊,好比你想在原來編譯好的php中加入memcached或者ImageMagick等擴展模塊,可使用phpize。nginx
phpize工具是在php安裝目錄下,基於這點phpize對應了當時的php環境,因此是要根據該php的配置狀況生成對應的configure文件,創建一個configure文件。必須在一個目錄下去運行phpize,那麼phpize就知道你的環境是哪一個目錄,而且configure文件創建在該目錄下。
web
cd memcache-2.2.5
phpize
Configuring for:
PHP Api Version: 20131106
Zend Module Api No: 20131226
Zend Extension Api No: 220131226
./configure ##源碼編譯,已經安裝好了php,咱們就不用再指定新的php擴展模塊路徑
make && make installsql
cd /usr/local/lnmp/php/etc/
vim php.ini
873 extension=memcache.so # 將873行memcache模塊的註釋打開
/etc/init.d/php-fpm reload
Reload service php-fpm done
php -m ##查看php模塊
php -m | grep memcache ##過濾memcache模塊,發現已經有了這個模塊
memcache數據庫
php -m | grep mysql ##同時支持mysql
mysql
mysqli
mysqlnd
pdo_mysqlvim
yum install -y memcahce
/etc/init.d/memcached start
netstat -antlp ##查看端口信息 memcache的監聽端口是(11211端口) 若是有端口信息說明工具開啓成功
注意:上面顯示的端口信息是,檢測全部11211端口的全部主機,若是想只監控本機則進行如下修改(注意,這裏只作介紹,實際只監聽本機是不合理的,此步驟不用作)
vim /etc/sysconfig/memcached
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS="-l 127.0.0.1" ##修改此處,將信息修改成本機的迴環接口的IP地址:127.0.0.1
/etc/init.d/memcached restart
Stopping memcached: [ OK ]
Starting memcached: [ OK ]
netstat -atnlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:11211 0.0.0.0:* LISTEN 3855/memcached ##顯示只監聽本機成功
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1251/nginx
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 910/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 986/master
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 3807/php-fpm
tcp 0 0 :::22 :::* LISTEN 910/sshd
tcp 0 0 ::1:25 :::* LISTEN 986/master
tcp 0 0 :::3306 :::* LISTEN 1210/mysqld
cd memcache-2.2.5
cp memcache.php example.php /usr/local/lnmp/nginx/html/ ##用nginx當作web服務器,將memcache的測試頁面放到相應的發佈目錄下面
cd /usr/local/lnmp/nginx/html/
vim memcache.php
22 define('ADMIN_USERNAME','memcache'); ##用戶爲memcache
23 define('ADMIN_PASSWORD','westos'); ##設置密碼爲westos // Admin Password
28 $MEMCACHE_SERVERS[] = '172.25.79.1:11211';
29 #$MEMCACHE_SERVERS[] = 'mymemcache-server2:11211';
yum install -y telnet ##爲何須要telnet?telnet就是查看某個端口是否可訪問。有時候常常要用的端口是 8080,那麼你能夠啓動服務器,用telnet 去查看這個端口是否可用。
telnet localhost 11211 ##
瀏覽器輸入:172.25.254.1:memcache.php
輸入設置的帳戶和密碼
而後從新打開一個瀏覽器頁面,輸入172.25.254.1:example.php ,不斷刷新
當訪問屢次example.php後,查看命中狀況會不斷提升,最後將會達到百分之百。 以下圖:
ab -c 10 -n 5000 http://172.25.254.1/index.php ## ab是性能測試的一個工具,可用於web的併發測試
ab經常使用參數的介紹:
-n :總共的請求執行數,缺省是1;
-c: 併發數,缺省是1;
-t:測試所進行的總時間,秒爲單位,缺省50000s
-p:POST時的數據文件
-w: 以HTML表的格式輸出結果
注意:若是沒有ab這個命令,則能夠安裝下包:yum install httpd-tools-2.2.15-29.el6_4.x86_64 -y
能夠看到所用時間爲5s左右,出錯個數爲529個:
ab -c 10 -n 5000 http://172.25.254.1/example.php
能夠看到所用時間爲2s左右,出錯個數爲0個,速度提升了,錯誤率大大下降