php_redis缓存服务器

redis缓存

缓存静态数据(squid varnish提高用户的访问速度)
缓存动态数据,所有的请求都在数据库/中间件(oneproxy),减轻压力。然后就是redis

redis缓存作用:

可以让数据库更好的减轻压力,缓存动态数据,实现redis与mysql的读写分离。
redis负责读取数据,mysql负责写入。
如果客户端的请求在redis上未命中,则去MySQL进行查询,并由MySQL反馈给客户端,在反馈的同时也会给redis发送一份数据,让redis进行缓存。

redis缓存特点:

1.支持比较小的数据,10MB之下
2.有周期性的,需要设置时间
3.redis先将数据缓存在内存中,可以通过周期,把缓存在内存中的内容通过AOF持久化的和RDB日志的形式写入到硬盘当中,数据不会丢失。

4.不会经常修改的数据,用户信息,商品的简介,商品的分类等
5.查询次数较多的数据的存放在redis中,从而提高用户访问速度

redis穿透

当请求发生异常,redis查询不到对应的数据,会直接去数据库上进行请求,导致数据库的安全性降低。
解决方案:
1.拒绝连接

redis雪崩

当请求量过大,redis查询的时间过长,积压了很多请求导致redis宕机。导致所有的请求堆至数据库当中。
解决方案:
1.设置当前的最大连接

搭建redis缓存服务器

环境拓扑图:

在这里插入图片描述
nginx+php:192.168.10.1
mysql:192.168.10.2
redis:192.168.10.3

php服务器设置本地监听端口
[root@localhost ~]# vim /usr/local/php/etc/php-fpm.d/www.conf
listen 192.168.10.1:9000

二.安装redis

[root@localhost ~]# tar -zxvf redis-5.0.5.tar.gz -C /usr/src/
[root@localhost ~]# mv /usr/src/redis-5.0.5/ /usr/local/redis
[root@localhost ~]# cd /usr/local/redis
[root@localhost ~]# make && make install

三.修改redis配置文件

vim /usr/local/redis/redis.conf

69 bind 192.168.10.1		#监听本机	
136 daemonize yes		#后台运行

[root@localhost redis]# redis-server /usr/local/redis/redis.conf
[root@localhost redis]# netstat -anpe | grep redis

测试是否能够连接redis服务器
[root@localhost redis]# redis-cli -h 192.168.10.1 -p 6379
192.168.10.1:6379>

四、安装php7-redis扩展

1.下载phpredis扩展工具

[root@localhost ~]# wget https://soft.itbulu.com/tools/phpredis-develop.zip
[root@localhost ~]# unzip phpredis-develop.zip
[root@localhost ~]# cd phpredis-develop

2.制作 configure文件
[root@localhost phpredis-master]# /usr/local/php/bin/phpize

3.编译安装
[root@localhost phpredis-develop]# ./configure --with-php-config=/usr/local/php/bin/php-config && make && make install
–出现以下内容说明编译安装成功,redis.so模块就在此目录当中

-Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-zts-20180731/

4.进入到这个扩展工具路径
[root@localhost ~]# cd /usr/local/php/lib/php/extensions/no-debug-zts-20180731/
[root@localhost no-debug-zts-20180731]# ls
opcache.a opcache.so redis.so

5.编辑php.ini配置文件

[root@localhost php]# vim /usr/local/php/php.ini
extension="/usr/local/php/"
extension=“redis.so”

[root@localhost php]# systemctl restart php-fpm
[root@localhost php]# bin/php -m | grep redis
---- redis

[root@localhost php]# lynx localhost/index.php
在这里插入图片描述

五、mysql上创建一些数据,授权用户让redis访问

mysql> CREATE DATABASE abc;
mysql> USE abc;
mysql> CREATE TABLE test (id int,name varchar(10));
mysql> INSERT INTO test values (1,‘shm’),(2,‘yh’),(3,‘chd’),(4,‘zs’),(5,‘ls’);
mysql> GRANT ALL ON abc.* TO ‘user1’@‘192.168.10.%’ IDENTIFIED BY ‘123.com’;

六、设置redis页面

[root@localhost php]# cd /usr/local/nginx/html/

[root@localhost html]# vim redis.php

<?php
$redis=new Redis;
#redis->connect("redis数据库IP地址",端口号)
$redis->connect("192.168.10.3",6379) or die ("could not connect");
#针对Mysql数据库的操作
$query="select * from abc.test limit 5";
for ($key=1;$key<=5;$key++) {
        if (!$redis->get($key)) {
                #使用设置好的用户访问MySQL数据库
                $conn=mysqli_connect("192.168.10.2","user1","123.com");
                #通过mysqli_query程序访问数据库,并做出$query定义好的操作
                $result=mysqli_query($conn,$query);
                while ($row=mysqli_fetch_assoc($result)) {
                        $redis->set($row["id"],$row["name"]);
                }
                break;
        }
        else {
                $name="redis";
                $data[$key]=$redis->get($key);
        }
}
echo $name;
echo "<br>";
for ($key=1;$key<=5;$key++) {
        echo "id is $key";
        echo "<br>";
        echo "name is $data[$key]";
        echo "<br>";
}
?>
通过访问redis.php页面,将MySQL数据加载到redis缓存服务器当中

[root@localhost html]# lynx 192.168.10.1/redis.php

在这里插入图片描述

在redis数据库中查看是否多出了5条键值对数据

[root@localhost redis]# redis-cli -h 192.168.10.1 -p 6379
[root@localhost html]# lynx 192.168.10.1/redis.php
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值