版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Hannah_zh/article/details/83592294
Redis作Mysql缓存服务器原理:
php默认从redis索取缓存数据,只有redis过期或删除,php才会从数据库索求数据。
环境配置:
server1:php代理
server2:redis缓存
server3:mysql数据库
实验部署:
1、安装php的redis扩展及nginx
[root@server1 redis]# yum install -y php-*
[root@server1 ~]# rpm -ivh nginx-1.8.0-1.el6.ngx.x86_64.rpm
php插件:
php-5.3.3-38.el6.x86_64.rpm
php-cli-5.3.3-38.el6.x86_64.rpm
php-common-5.3.3-38.el6.x86_64.rpm
php-devel-5.3.3-38.el6.x86_64.rpm
php-fpm-5.3.3-38.el6.x86_64.rpm
php-gd-5.3.3-38.el6.x86_64.rpm
php-mbstring-5.3.3-38.el6.x86_64.rpm
php-mysql-5.3.3-38.el6.x86_64.rpm
php-pdo-5.3.3-38.el6.x86_64.rpm
2、配置nginx及php
[root@server1 php-fpm.d]# useradd nginx
[root@server1 php-fpm.d]# id nginx
uid=500(nginx) gid=500(nginx) groups=500(nginx)
[root@server1 php-fpm.d]# vim /etc/php-fpm.d/www.conf
39 user = nginx
41 group = nginx
[root@server1 ~]# vim /etc/php.ini
946 date.timezone = Asia/Shanghai
[root@server1 ~]# /etc/init.d/php-fpm start
示图:php监听端口9000
[root@server1 ~]# vim /etc/nginx/conf.d/default.conf
10 index index.php index.html index.htm;
30 location ~ \.php$ {
31 root html;
32 fastcgi_pass 127.0.0.1:9000;
33 fastcgi_index index.php;
34 fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name;
35 include fastcgi_params;
36 }
[root@server1 ~]# /etc/init.d/nginx start
[root@server1 ~]# vim /usr/share/nginx/html/index.php
<?php
phpinfo()
?>
[root@server1 ~]# /etc/init.d/nginx reload
示图:php测试页
3、设定server2为redis缓存,server3为mysql数据库
[root@server1 redis]# cp test.php /usr/share/nginx/html/
[root@server1 php.d]# vim /usr/share/nginx/html/test.php
3 $redis->connect('172.25.51.2',6379) or die ("could net connect redis server");
10 $connect = mysql_connect('172.25.51.3','redis','westos');
4、添加php支持的redis
[root@server1 redis]# unzip phpredis-master.zip
[root@server1 redis]# cd phpredis-master
[root@server1 phpredis-master]# phpize
[root@server1 phpredis-master]# ./configure
[root@server1 phpredis-master]# make && make install
[root@server1 ~]# /etc/init.d/php-fpm reload
[root@server1 ~]# cd /etc/php.d/
[root@server1 php.d]# cp mysql.ini redis.ini
[root@server1 php.d]# vim redis.ini
1 extension=redis.so
[root@server1 ~]# /etc/init.d/php-fpm reload
示图:php支持redis
5、server2开启redis服务
[root@server1 redis]# scp test.sql server2:
配置redis,server2为Master,server3为Slave
[root@server3 ~]# vim /etc/redis/6379.conf ##server3为server2的slave
283 slaveof 172.25.51.2 6379
[root@server2 ~]# redis-cli
127.0.0.1:6379> info ##查看redis信息
6、server3配置mysql数据库
[root@server1 redis]# scp test.sql server3:
[root@server3 ~]# yum install -y mysql-server
[root@server3 ~]# /etc/init.d/mysqld start
[root@server3 ~]# mysql < test.sql ##将test数据库导入mysql
查看test数据库
[root@server3 ~]# mysql
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| test |
+--------------------+
mysql> use test;
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| test |
+----------------+
mysql> select * from test;
+----+-------+
| id | name |
+----+-------+
| 1 | test1 |
| 2 | test2 |
| 3 | test3 |
| 4 | test4 |
| 5 | test5 |
| 6 | test6 |
| 7 | test7 |
| 8 | test8 |
| 9 | test9 |
+----+-------+
mysql> grant all on test.* to redis@'%' identified by 'westos';
6、测试:访问172.25.51.1
1、php默认从redis索取数据,第一次redis无缓存,则php从mysql索取数据
2、将数据库server3内容更新,则php默从redis索取数据,redis不索取数据
server3:更新数据库
mysql> update test set name='zh' where id=1;
3、将数据库server3内容更新,redis删除缓存节点信息,则php从数据库索取数据
server3:更新数据库
mysql> update test set name='zh' where id=1;