LNMP架構---MemCache對php頁面的緩存加速優化

LNMP架構—MemCache對php頁面的緩存加速優化

1.什麼是MemCache?

  • memcache是一個高性能的分佈式的內存對象緩存系統,用於動態Web應用以減輕數據庫負擔。
  • memcache通過在內存裏維護一個統一的巨大的hash表,來存儲經常被讀寫的一些數組與文件,從而極大的提高網站的運行效率。
  • memcache是一種內存緩存技術,是一種緩存手段,要看情況來使用。
  • 對於頻繁讀取,每次讀取重複率高,數據更新頻度低的數據,用memcache可以優化你的系統響應速度。

Memcache和memcached的區別:
Memcache是這個項目的名稱,而memcached是它服務器端的主程序文件名。

2.MemCache的工作流程

  • 檢查客戶端的請求數據是否在memcached中,如有,直接把請求數據返回,不再對數據庫進行任何操作
  • 如果請求的數據不在memcached中,就去查數據庫,把從數據庫中獲取的數據返回給客戶端,同時把數據緩存一份到memcached中(memcached客戶端不負責,需要程序明確實現)
  • 每次更新數據庫的同時更新memcached中的數據,保證一致性。
  • 當分配給memcached內存空間用完之後,會使用LRU(Least Recently Used,最近最少使用)策略加上到期失效策略,失效數據首先被替換,然後再替換掉最近未使用的數據。

3.爲什麼要使用Memcache ?

主要用於動態Web應用以減輕數據庫的負載。它通過在內存中緩存數據和對象來減少讀取數據庫的次數,從而提高了網站訪問的速度

memcache使用場景:

  • 訪問頻繁的字典數據

  • 大量的hot數據

  • 頁面緩存

  • 頻繁的查詢條件和結果

  • 臨時處理的數據

4.MemCache對php頁面的緩存加速優化

step1 解壓memcache源碼包:

tar zxf memcache-4.0.5.2.tgz 

step2 將php編譯完成的二進制命令加入環境變量中:

cd memcache-4.0.5.2
phpize
vim ~/.bash_profile 
寫入:
11 PATH=$PATH:$HOME/bin:/usr/local/lnmp/mysql/bin:/usr/local/lnmp/php/bin

source ~/.bash_profile 
phpize
yum install autoconf -y	#安裝需要的軟件
phpize

在這裏插入圖片描述
phpize是用來擴展php擴展模塊的,通過phpize可以建立php的外掛模塊,比如你想在原來編譯好的php中加入memcached或者ImageMagick等擴展模塊,可以使用phpize。
phpize工具是在php安裝目錄下,基於這點phpize對應了當時的php環境,所以是要根據該php的配置情況生成對應的configure文件,建立一個configure文件。必須在一個目錄下去運行phpize,那麼phpize就知道你的的環境是哪個目錄,並且configure文件建立在該目錄下。

step3 編譯安裝memcache源碼包:

./configure --with-php-config=/usr/local/lnmp/php/bin/php-config
make && make install	#安裝完成後最後一行會有一個路徑,複製下來

在這裏插入圖片描述
step4 在php的配置文件中添加memcache模塊:

cd /usr/local/lnmp/php/etc/
ls
vim php.ini 
寫入:
 759 extension_dir = "/usr/local/lnmp/php/lib/php/extensions/no-debug-non-zts-20190902/"

 913 extension=memcache.so

在這裏插入圖片描述
在這裏插入圖片描述

/etc/init.d/php-fpm reload	#重新加載php
php -m | grep memcache	#過濾memcache模塊,發現已經有了這個模塊
php -m | grep mysql		#同時支持mysql

在這裏插入圖片描述
step5 安裝memcache工具並啓動memcache:

yum install memcached -y
cat /etc/sysconfig/memcached 
systemctl start memcached

在這裏插入圖片描述
step6 安裝telnet:

telnet
yum install telnet -y
telnet
telnet localhost 11211

在這裏插入圖片描述
在這裏插入圖片描述
step7 將測試文件複製到nginx的默認發佈頁面,設置memcached的密碼:

cd memcache-4.0.5.2
cp memcache.php example.php /usr/local/lnmp/nginx/html/
cd /usr/local/lnmp/nginx/html/
ls
vim memcache.php 
修改:
 22 define('ADMIN_USERNAME','memcache');    // Admin Username
 23 define('ADMIN_PASSWORD','westos');      // Admin Password

 28 $MEMCACHE_SERVERS[] = '172.25.254.1:11211'; // add more as an array
 29 #$MEMCACHE_SERVERS[] = 'mymemcache-server2:11211'; // add more as an array

在這裏插入圖片描述
在這裏插入圖片描述
step8 測試:

訪問172.25.254.1:/memcache.php	#該頁面顯示了訪問命中率
(先不要關閉該頁面)

在這裏插入圖片描述
壓力測試:加速頁面example.php和沒加速index.php的對比(錯誤率對比,相應時間對比)

ab -c 10 -n 5000 http://172.25.254.1/index.php
ab -c 10 -n 5000 http://172.25.254.1/example.php

在這裏插入圖片描述
在這裏插入圖片描述
刷新剛纔的頁面,發現命中率達到100%
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章