Redis作Mysql缓存服务器

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从数据库索取数据

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
是的,RedisMySQL可以一起使用,将Redis为数据库的缓存层,以提高性能和可扩展性。 Redis是一个内存数据库,它具有快速读写的特点,并且支持各种数据结构。通过将常用的查询结果、热门数据或频繁访问的数据存储在Redis,可以减少对MySQL数据库的访问次数,从而提高系统的响应速度和吞吐量。 使用Redis为数据库缓存的一般步骤如下: 1. 将MySQL的数据加载到Redis:可以通过定期导入或实时同步的方式,将MySQL的数据加载到Redis。这样,在访问数据时,先从Redis查询,如果找到则直接返回结果;如果未找到,则从MySQL查询,并将结果保存到Redis。 2. 设置合适的过期时间:对于缓存Redis的数据,可以设置合适的过期时间,以确保缓存数据的有效性和一致性。过期时间可以根据数据的特性和业务需求来确定。 3. 定义缓存策略:根据业务需求,定义合适的缓存策略。例如,可以缓存热门数据、频繁查询的数据或者一些计算结果,以提高系统性能。 4. 实现缓存更新机制:当MySQL的数据发生变化时,需要及时更新对应的缓存数据。可以通过监听MySQL的数据修改事件或者在数据更新的同时,同步更新Redis缓存数据。 需要注意的是,使用Redis为数据库缓存时,需要权衡数据一致性和性能。因为Redis是基于内存的,如果系统重启或者Redis服务器发生故障,缓存数据可能会丢失。因此,在设计和实现时,需要考虑如何处理这种情况,并保证数据的一致性和可恢复性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值