LAMP在企業生產環境中,除了將MYSQL單獨部署在其他服務器、由於MYSQL數據庫壓力會很大,還會對MYSQL實現主從複製及讀寫分離,同時會對PHP網站進行調優,通常PHP的優化手段包括:PHP代碼本身優化、PHP配置文件優化、爲PHP添加緩存模塊,將PHP網站數據存入緩存等。
爲了減輕MYSQL數據庫的壓力,這時就用到了Redis緩存數據庫服務,
LAMP+Redis工作機制:用戶通過瀏覽器訪問LAMP網站,並以用戶名和密碼登錄到網站,默認Redis緩存中沒有該用戶名和密碼對應列表,PHP程序會讀取MYSQL數據庫中的用戶名和密碼,然後將用戶名和密碼緩存至Redis中,下次用戶通過瀏覽器再次使用同樣的用戶名和密碼登錄網站,PHP無需從數據庫中讀取該用戶和密碼信息,而是直接優先從Redis緩存中讀取並返回,從而減輕MYSQL數據庫的壓力。
Redis除了可以緩存用戶名、密碼,還可以換成PHP論壇各種數據,例如用戶帖子、用戶動態等等,如下圖所示:
要實現將LAMP PHP網站相關數據存入Redis,需要一臺Redis服務器、PHP-redis連接驅動、PHP代碼連接修改等。
LAMP+Redis操作案例
LAMP PHP連接Redis,首先需安裝Redis服務器,安裝連接驅動,然後修改PHP網站配置文件,具體操作步驟如下:
(1) LAMP+Redis實戰環境配置
LAMP服務器: 192.168.149.128 Redis數據庫: 192.168.149.129 |
(2) 192.168.149.129服務器安裝部署Redis服務,代碼如下
wget http://download.redis.io/releases/redis-2.8.13.tar.gz tar zxf redis-2.8.13.tar.gz cd redis-2.8.13 make PREFIX=/usr/local/redis install cp redis.conf /usr/local/redis/ |
將/usr/local/redis/bin/目錄加入至環境變量配置文件/etc/profile末尾,然後Shell終端執行source /etc/profile讓環境變量生效
export PATH=/usr/local/redis/bin:$PATH |
Nohup後臺啓動及停止Redis服務命令:
nohup /usr/local/redis/bin/redis-server /usr/local/redis/redis.conf & /usr/local/redis/bin/redis-cli -p 6379 shutdown |
(3) 安裝PHP-Redis連接驅動
要確保PHP能夠連接Redis緩存服務器,需添加PHP Redis擴展程序,也即是添加PHP安ext擴展模塊,添加方法如下:
wget https://github.com/phpredis/phpredis/archive/3.1.2.tar.gz tar xzf 3.1.2.tar.gz /usr/local/php5/bin/phpize cd phpredis-3.1.2/ ./configure --with-php-config=/usr/local/php5/bin/php-config --enable-redis make install |
修改vim/usr/local/php5/lib/php.ini配置文件,添加redis.so模塊,代碼如下:
extension_dir = "/usr/local/php5/lib/php/extensions/no-debug-zts-20090626" extension=redis.so |
重啓Apache服務,寫入phpinfo測試頁面,通過瀏覽器訪問,如圖12-9所示,檢查到存在Redis模塊即可:
(4) LAMP+Redis緩存測試
登錄192.168.149.128 WEB服務器,修改Discuz PHP網站發佈/usr/local/apache2/htdcos目錄全局配置文件config_global.php,查找CONFIG MEMORY段,將redis server後改爲Redis主服務器的IP192.168.149.129即可,如下圖所示:
通過瀏覽器訪問Apache PHP論壇網站,同時登陸Redis服務器,執行命令redis-cli進入Redis命令行,運行命令keys *,如下圖所示,存在以IOKLAN開頭的key,則證明Redis成功緩存LAMP+Discuz網站信息數據。