Redis 缓存MySQL数据

Redis 缓存MySQL 中的数据

实验环境:

HostIP环境
Redis1.1.1.102LNMP

实验目的

  • Redis 将MySQL中的数据缓存至 Redis中

1) 将LNMP 中的IP地址改为本身的地址(php-rpm、nginx)

  • Nginx
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf

    server {
        listen       80;
        server_name  1.1.1.102;
 location ~ \.php$ {
            root           html;
            fastcgi_pass   1.1.1.102:9000;
            
            
# 重启服务
[root@localhost ~]# killall nginx
[root@localhost ~]# nginx
[root@localhost ~]# netstat -anpt | grep 80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      117611/nginx: maste 


  • PHP_FPM
[root@localhost ~]# vim /usr/local/php/etc/php-fpm.conf
listen = 1.1.1.102:9000

# 重启服务
[root@localhost ~]# systemctl restart php-fpm
[root@localhost ~]# netstat -anpt | grep php-fpm
tcp        0      0 1.1.1.102:9000          0.0.0.0:*               LISTEN      117628/php-fpm: mas 

  • 添加测试动态页面程序
[root@localhost ~]# vim /usr/local/nginx/html/index.php
<?php
phpinfo()
?>

2) 安装Redis

  • 安装Redis,解压后直接在源码包中进行编译安装
[root@localhost ~]# tar -zxf redis-4.0.6.tar.gz -C /usr/src/
[root@localhost ~]# cp -r /usr/src/redis-4.0.6/ /usr/local/redis
[root@localhost ~]# cd /usr/local/redis/
[root@localhost redis]# make && make install

3) 修改 Redis 配置文件并运行Redis

  • 修改配置文件
[root@localhost redis]# vim /usr/local/redis/redis.conf 
bind 1.1.1.102				# 指定监听地址
daemonize yes		        # 允许后台运行
  • 运行Redis(redis-server 配置文件路径)
    • redis-server 启动命令字,指定redis 配置文件
[root@localhost redis]# redis-server /usr/local/redis/redis.conf 

[root@localhost redis]# netstat -anpt | grep redis
tcp        0      0 1.1.1.102:6379          0.0.0.0:*               LISTEN      120987/redis-server

4) 安装phpredis-mater 程序

  • 用于在 PHP中安装 redis 模块,将redis 模块插入 PHP中,使 redis 与 MySQL 可以通过PHP进行沟通
[root@localhost ~]# unzip phpredis-master.zip 			# 使用 unzip 解压
[root@localhost ~]# cd phpredis-master				
[root@localhost phpredis-master]# ln -s /usr/local/php/sbin/* /usr/sbin/		
[root@localhost phpredis-master]# ln -s /usr/local/php/bin/* /usr/bin/	

  • 该源码中 没有 configure 程序,使用phpize 生成
[root@localhost phpredis-master]# phpize	
  • 编译安装
    • –with-php-config=/usr/local/php/bin/php-config 指定PHP连接的配置文件
[root@localhost phpredis-master]# ./configure --with-php-config=/usr/local/php/bin/php-config && make && make install
  • 根据安装完成的提示,会提示一个路径,这个路径 是 redis.so 模块的目录
 [root@localhost phpredis-master]# ls /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/ 
 redis.so
  • 将 redis.so 模块 ,添加至 php.ini 配置文件中的最后一行
  • 添加至末尾
[root@localhost phpredis-master]# vim /usr/local/php/lib/php.ini

extension = redis.so
  • 重启服务(php-fpm)
[root@localhost phpredis-master]# systemctl restart php-fpm
  • 访问 测试页面
    • 查看 redis 模块,是否添加

5) 部署Mysql

  • 为了实验目的,需要手动再 MySQL中 创建数据,来完成实验

  • 创建授权用户,用于缓存数据内容

mysql> USE abc;
Database changed
mysql> CREATE TABLE test(id INT, name VARCHAR(10));
Query OK, 0 rows affected (0.11 sec)

mysql> INSERT INTO test values(1,'one'),(2,'two'),(3,'three'),(4,'four'), (5,'five');
Query OK, 5 rows affected (0.01 sec)
Records: 5  Duplicates: 0  Warnings: 0

mysql> GRANT ALL ON abc.test TO 'root'@'1.1.1.%' IDENTIFIED BY '123.com';
Query OK, 0 rows affected (0.38 sec)

6) 编写测试程序

  • 用于缓存MySQL数据
[root@localhost ~]# vim /usr/local/nginx/html/index.php 

<?php
$redis=new Redis;						
$redis->connect("1.1.1.102",6379) or die ("could not connect");		
$query="select * from abc.test limit 5";		
for ($key=1;$key<=5;$key++) {			
        if (!$redis->get($key)) {				
                $conn=mysql_connect("1.1.1.102","root","123.com");		
                $result=mysql_query($query);						
                while ($row=mysql_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>";
}

<?php
$redis=new Redis;								#  定义 一个 Redis  的对选
$redis->connect("1.1.1.102",6379) or die ("could not connect");		# 指定 redis 数据库
$query="select * from abc.test limit 5";			# 获取 MySQL中数据库的 数据
for ($key=1;$key<=5;$key++) {			
        if (!$redis->get($key)) {					# 判断,如果客户端请求未命中
                $conn=mysql_connect("1.1.1.102","root","123.com");		# 则去访问数据库,读取数据
                $result=mysql_query($query);							# 读取数据
                while ($row=mysql_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>";
}
  • 浏览器访问

C:\Users\Administrator\Desktop\clipboard.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值