LAMP+Redis企业实战

LAMP+Redis工作机制:用户通过浏览器访问LAMP网站,并以用户名和密码登录到网站,默认Redis缓存中没有该用户名和密码对应列表,PHP程序会读取MYSQL数据库中的用户名和密码,然后将用户名和密码缓存至Redis中,下次用户通过浏览器再次使用同样的用户名和密码登录网站,PHP无需从数据库中读取该用户和密码信息,而是直接优先从Redis缓存中读取并返回,从而减轻MYSQL数据库的压力。

Redis除了可以缓存用户名、密码,还可以换成PHP论坛各种数据,例如用户帖子、用户动态等等,如图12-8所示:

图12-8 LAMP+Redis架构流程图

要实现将LAMP PHP网站相关数据存入Redis,需要一台Redis服务器、PHP-redis连接驱动、PHP代码连接修改等。

LAMP+Redis操作案例

LAMP PHP连接Redis,首先需安装Redis服务器,安装连接驱动,然后修改PHP网站配置文件,具体操作步骤如下:

  • LAMP+Redis实战环境配置
LAMP服务器: 192.168.149.128

Redis主库: 192.168.149.129

Redis从库: 192.168.149.130

  • 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

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

图12-9 PHP Redis模块添加

  • LAMP+Redis缓存测试

登录192.168.149.128 WEB服务器,修改Discuz PHP网站发布/usr/local/apache2/htdcos目录全局配置文件config_global.php,查找CONFIG MEMORY段,将redis server后改为Redis主服务器的IP 192.168.149.129即可,如图12-10所示:

图12-10 PHP Redis配置文件修改

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

图12-11 Redis缓存LAMP KEYS数据

  1. 测试Redis缓存是否生效

访问LAMP+Discuz网站,创建论坛测试用户jfedu666,密码jfedu666,此时用户数据第一次注册,用户名和密码会写入到MySQL数据库表中,同时会写入该数据也会写入到Redis缓存,如图12-12(a)、12-12(b)、12-12(c)所示:

图12-12(a) 创建论坛用户和密码

图12-12(b) MySQL数据库用户查询

图12-12(c) Redis缓存测试案例

将jfedu666从MySQL Discuz库pre_common_member中删除,通过该用户依然可以正常登录WEB网站,则证明此时数据读取的是Redis缓存服务器,如图12-13(a)、12-13(b)、12-13(c)所示:

图12-13(a) 删除数据库用户和密码

图12-13(b) 用户名和密码登录discuz论坛

图12-13(c) 用户名和密码登录discuz论坛