Redis作Mysql缓存服务器

版权声明:本文为博主原创文章,未经博主允许不得转载。 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;
server2:删除redis缓存的节点信息

在这里插入图片描述

示图:php从数据库索取数据

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Hannah_zh/article/details/83592294