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 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网站信息数据。