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+Redis缓存数据库整合_第1张图片

要实现将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扩展程序,也即是添加PHPext扩展模块,添加方法如下:

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

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模块即可:

LAMP+Redis缓存数据库整合_第2张图片

(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即可,如下图所示:

LAMP+Redis缓存数据库整合_第3张图片

通过浏览器访问Apache PHP论坛网站,同时登陆Redis服务器,执行命令redis-cli进入Redis命令行,运行命令keys *,如下图所示,存在以IOKLAN开头的key,则证明Redis成功缓存LAMP+Discuz网站信息数据。