標籤:centos linux wordpress redis
Redis是一個開源、支援網路、基於記憶體的key-value儲存系統,類似memcached,效能極高,支援超過100K+ 每秒的讀寫頻率,一些大型的網站例如ITeye(JavaEye)和CSDN現在都用到了Redis。
與memcached相比,Redis提供了持久化儲存,重啟了伺服器後memcached需要重新建立緩衝,而Redis依賴快照進行持久化,即使伺服器剛開機啟動也不會導致負載陡增。Redis緩衝比較適合大流量的Wordpress。
當你的WordPress中的文章達到上萬篇,隨著流量的增加,Wordpress的伺服器壓力也隨之不斷加大,Wordpress發布文章和後台相關的操作都會變得緩慢,這時如果單從硬體上投入來提高Wordpress效能顯然不划算。
利用Redis將WordPress頁面直接緩衝在伺服器的記憶體中,這樣在避免了PHP重複執行操作的同時,記憶體的極速響應能夠最大限度地提升Wordpress頁面的訪問速度,部落實際測試發現頁面執行時間可以降低到0.00X秒層級,比沒有使用Redis緩衝提升幾倍甚至十幾倍以上。
環境說明:centos6.6 LNMP環境
redis官網下載源碼:http://redis.io/download
[[email protected] src]# wget http://download.redis.io/releases/redis-3.0.2.tar.gz[[email protected] src]# tar zxvf redis-3.0.2.tar.gz [[email protected] redis-3.0.2]# cd redis-3.0.2[[email protected] redis-3.0.2]# make
#redis的安裝非常簡單,已經有現成的Makefile檔案,直接運行make命令即可
安裝完成後在src目錄下,會產生幾個可執行檔:redis-benchmark,redis-check-aof,redis-check- dump,redis-cli,redis-sentinel,redis-server。這幾個檔案,加上一個redis.conf就構成了整個redis的最終可用包。
下面你可以把這幾個可執行檔和redis.conf檔案複製到你所希望的地方,比如/usr/local/redis/bin 和/usr/local/redis/etc 下面的,命令如下:
[[email protected] src]# cd redis-3.0.2[[email protected] redis-3.0.2]# mkdir -p /usr/local/redis/{bin,var,etc}[[email protected] redis-3.0.2]# cd src/[[email protected] src]# cp redis-benchmark redis-check-aof redis-check-dump redis-cli redis-sentinel redis-server /usr/local/redis/bin/[[email protected] redis-3.0.2]# cp /usr/local/src/redis-3.0.2/redis.conf /usr/local/redis/etc[[email protected] redis-3.0.2]# ln -s /usr/local/redis/bin/* /usr/bin/
修改redis.conf設定檔:
[[email protected] redis-3.0.2]# sed -i ‘s#pidfile.*$#pidfile /var/run/redis.pid#‘ /usr/local/redis/etc/redis.conf [[email protected] redis-3.0.2]# sed -i ‘s#logfile.*$#logfile /usr/local/redis/var/redis.log#‘ /usr/local/redis/etc/redis.conf [[email protected] redis-3.0.2]# sed -i ‘s#^dir.*$#dir /usr/local/redis/var#‘ /usr/local/redis/etc/redis.conf [[email protected] redis-3.0.2]# sed -i ‘s#daemonize no#daemonize yes#‘ /usr/local/redis/etc/redis.conf
注意,預設複製過去的redis.conf檔案的daemonize參數為no,所以redis不會在後台運行,這時要測試,我們需要重新開一個終端。修改為yes則為後台運行redis。另外設定檔中規定了pid檔案,log檔案和資料檔案的地址,如果有需要先修改,預設log資訊定向到標準輸出。
[[email protected] redis-3.0.2]# echo ‘vm.overcommit_memory = 1‘>> /etc/sysctl.conf [[email protected] redis-3.0.2]# sysctl -p
配置開機啟動redis-server
[[email protected] src]# wget https://raw.githubusercontent.com/lj2007331/lnmp/master/init/Redis-server-init-CentOS[[email protected] src]# mv Redis-server-init-CentOS /etc/init.d/redis-server[[email protected] src]# chmod +x /etc/init.d/redis-server [[email protected] src]# chkconfig --add redis-server[[email protected] src]# chkconfig redis-server on
啟動redis
[[email protected] src]# service redis-server start
測試:
[[email protected] src]# /usr/local/redis/bin/redis-cli127.0.0.1:6379> set 123 babyOK127.0.0.1:6379> get 123"baby"127.0.0.1:6379> exit
關閉redis
[[email protected] src]# service redis-server stop
安裝redis php用戶端
[[email protected] src]# wget http://pecl.php.net/get/redis-2.2.3.tgz[[email protected] src]# tar zxf redis-2.2.3.tgz [[email protected] src]# cd redis-2.2.3
執行phpize命令,產生configure可執行檔
[[email protected] redis-2.2.3]# /usr/local/php-fpm/bin/phpize [[email protected] redis-2.2.3]# ./configure --with-php-config=/usr/local/php-fpm/bin/php-config [[email protected] redis-2.2.3]# make && make install
php.ini設定檔,添加extension
[[email protected] ~]# sed -i ‘/; extension_dir = "ext"/a\extension = "redis.so"‘ /usr/local/php-fpm/etc/php.ini [[email protected] ~]# service php-fpm restart
使wordpress支援redis
你需要一個用戶端開發包以便PHP可以串連到redis服務端 ,這裡我們推薦predis. 加入WordPress的根目錄,執行下面
[[email protected] src]# wget http://uploads.staticjw.com/ji/jim/predis.php[[email protected] src]# chown php-fpm:php-fpm predis.php
前端緩衝的PHP指令碼,加入WordPress的根目錄,執行下面
[[email protected] src]# wget https://gist.githubusercontent.com/JimWestergren/3053250/raw/d9e279e31cbee4a1520f59108a4418ae396b2dde/index-with-redis.php[[email protected] src]# chown php-fpm:php-fpm index-with-redis.php [[email protected] src]# mv predis.php index-with-redis.php /data/www/blog
根據自己需求修改index-with-redis.php,修改如下:
$cf = 0; // set to 1 if you are using cloudflare$debug = 1; // set to 1 if you wish to see execution time and cache actions$display_powered_by_redis = 0; // set to 1 if you want to display a powered by redis message with execution time, see below
如果你正在使用cloudflare,請設定cf = 1; ,
如果你想在頁面上看到指令碼執行時間和緩衝載入時間,請設定$debug = 1; 瀏覽器最下方會顯示this is cache:
display_powered_by_redis = 1表示顯示powered_by資訊。如右下角表徵圖:
650) this.width=650;" src="/e/u261/themes/default/images/spacer.gif" style="background:url("/e/u261/lang/zh-cn/images/localimage.png") no-repeat center;border:1px solid #ddd;" alt="spacer.gif" />650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/6F/96/wKiom1WiGaHBB7V1AAByoJyiy64741.jpg" title="redis.jpg" alt="wKiom1WiGaHBB7V1AAByoJyiy64741.jpg" />
替換index.php
[[email protected] blog]# mv index.php index.php.bak[[email protected] blog]# mv index-with-redis.php index.php
緩衝問題
index-with-redis.php中有注釋
- appending a ?c=y to a url deletes the entire cache of the domain, only works when you are logged in - appending a ?r=y to a url deletes the cache of that url - submitting a comment deletes the cache of that page - refreshing (f5) a page deletes the cache of that page
登入後台網站url後面加上?c=y即可重新整理整個網站
可以在網站頁面後面加上?r=y即可手工重新整理
提交評論會自動重新整理頁面
重新整理(f5)頁面也可以重新整理頁面
重新整理網頁查看緩衝效果,查看原始碼
360瀏覽器頁面最下角會顯示類似:this is a cache: 0.04534
F5重新整理頁面緩衝時間會變化
注意事項
1、注意,Wordpress Redis緩衝PHP版本在5.3以上
2、Wordpress Redis緩衝加速效果無疑是明顯的,特別頁面多訪問大的網站部落格,在使用Wordpress Redis緩衝加速時請禁止其它的所有快取區外掛程式,以免造成不必要的衝突。
本文出自 “模範生的學習部落格” 部落格,請務必保留此出處http://mofansheng.blog.51cto.com/8792265/1673829
wordpress部落格安裝redis緩衝