1. LNMP+memcached
1.1 實驗環境
node1:192.168.1.11
LNMP環境:還沒有配置好LNMP環境,參考https://blog.csdn.net/m0_37868230/article/details/105965040配置環境
1.2 memcached
1.2.1 memcached定義
Memcached是一個自由開源的,高性能,分佈式內存對象緩存系統。
web應用都將數據保存在數據庫中,應用服務器從中讀取數據並在瀏覽器中顯示。但隨着數據量的增大、訪問的集中,會導致數據庫負擔加重、數據庫響應惡化、網站顯示延遲等重大影響。這個時候就需要memcached通過緩存數據庫查詢結果、減少數據庫訪問次數,以提高動態Web應用的速度、提高可擴展性。
Memcached是一種基於內存的key-value存儲,用來存儲小塊的任意數據(字符串、對象)。這些數據可以是數據庫調用、API調用或者是頁面渲染的結果。
1.2.2 memcached工作流程
因此每次更新mysql中數據,也會同時更新memcached中的數據,來保證一致性。且當memcached內存空間用完,會使用LRU策略和到期失效策略,替換數據。首先將失效數據替換,接下來是最近未使用數據。
1.2.3 memcached安裝
yum install -y memcached.x86_64
rpm -qa | grep memcached # 查詢安裝的信息
rpm -ql memcached-1.4.15-10.el7_3.1.x86_64 # 查詢並列出安裝的包的內容
1.2.4 安裝php的memcache擴展
- 獲取安裝包
- 解壓安裝包
tar zxf memcache-4.0.5.2.tgz
可以看到,當前目錄下,沒有編譯的文件,因此這裏我們需要使用phpize來生成編譯文件
- 通過phpize生成編譯文件【注意,這裏是因爲memcache是php的一個模塊,纔可以使用phpize來生成】
ln -s /usr/local/lnmp/php/bin/* /usr/local/bin/ # 做軟鏈接,可以直接使用bin目錄下的命令
source /etc/profile # 重新加載環境變量
phpize # 生成編譯文件
yum install -y autoconf # 安裝autoconf
此時,我們再次去生成編譯文件,就沒有問題了,我們想要的configure文件就已經生成了。結果如下:
- 編譯
./configure --with-php-config=/usr/local/lnmp/php/bin/php-config # 指定php配置文件的路徑
- make && make install
- 修改php配置文件,引入擴展
vim /usr/local/lnmp/php/etc/php.ini
/etc/init.d/php-fpm reload # 重啓php
php -m | grep memcache # 查看是否有memcache模塊
查詢可以看到,模塊引入成功~
1.2.5 測試
- 複製memache的php頁面
cp example.php memcache.php /usr/local/lnmp/nginx/html/ # 複製php文件到html下
vim /usr/local/lnmp/nginx/html/memcache.php # 編輯memcache.php
- 啓動memcached服務
- 瀏覽器訪問
- 測試速率優化
yum install -y httpd-tools-2.4.6-88.el7.x86_64 # 安裝ab工具所在的包
ab -c 10 -n 3000 http://192.168.1.11/index.php
# 10個併發3000次請求訪問http://192.168.1.11/index.php[沒有經過memcache緩存,看一下緩存速率有多快]
ab -c 10 -n 3000 http://192.168.1.11/example.php
# 10個併發3000次請求訪問http://192.168.1.11/example.php[經過memcache緩存,看一下緩存速率有多快]
可以看到,memcached緩存的沒有失敗的請求,且處理速率高[處理請求多,因此直觀看上去貌似是前者快,但實際處理請求越多時差距越明顯]~