Skip to content

redis服务器环境下mysql实现lamp架构缓存

ip 角色 环境
192.168.242.49 缓存服务器 Redis2.2.7
192.168.242.50 mysql服务器 mysql
192.168.242.51 web端 php
  • [x] ***默认已安装好redis,mysql

三台服务器时间同步(非常重要)

# 下载ntpdate
yum -y install ntp ntpdate
# 同步时钟
ntpdate cn.pool.ntp.org
# 将系统时钟的时间设置到硬件时钟
hwclock --systohc

redis配置

# 如果不添加密码认证,远程登录不上
vi /usr/local/redis-6.2.3/redis.conf

# 修改允许其他主机远程登录,注释掉下面的语句
bind 127.0.0.1
# 修改取消保护模式
protected-mode no
# 将其中的daemonize no值修改为如下(可选)
daemonize yes # 此设置用于将redis以守护进程方式运行。


# 重启redis
./src/redis-server redis.conf

添加mysql登录用户

# 登录mysql
mysql -uroot -p'密码'
# 为redis创建一个远程登录用户
create user 'redis'@'%' identified with mysql_native_password by 'redis@123';
# 授予读权限
GRANT SELECT ON *.* TO 'redis'@'%';
# 使配置生效
flush privileges;

向mysql添加测试数据

# 创建mytest数据库
create database mytest;
# 创建dog表
use mytest;
create table dog( id int, name varchar(10) );
# 加入测试数据
insert into dog(id,name) values(1,"heibei"),(2,"zangao"),(3,"hashiqi"),(4,"jinmao"),(5,"tugou"),(6,"bomei"),(7,"labuladuo"),(8,"xigou"),(9,"tiangou");

安装php与扩展(web端)

安装php

yum install php php-fpm php-cli php-common php-gd php-mbstring php-mysql php-pdo php-devel php-xmlrpc php-xml php-bcmath php-dba php-enchant

安装php的redis扩展

# 安装源码编译支持库:
yum install gcc gcc-c++
# 下载扩展包
wget http://pecl.php.net/get/redis-2.2.7.tgz
tar -zxvf redis-2.2.7.tgz
cd redis-2.2.7/
# 检测php环境并生成configure
phpize
./configure
make
make install 

修改/etc/php.ini

vi /etc/php.ini
# 在末尾添加如下语句
extension=redis.so
# 重启http服务
systemctl restart httpd

编写http发布文件

 vi /var/www/html/index.php

 <?php
phpinfo();
?>

访问phpinfo页面:http://192.168.242.51/index.php

记得防火墙与selinux是否关闭

image-20241125180937216

编写redis.php测试代码

 vi /var/www/html/redis.php

 <?php
        $redis = new Redis();
        $redis->connect('192.168.242.49',6379) or die ("could net connect redis server");
        //此处修改自己的redis服务器地址,确保已经启动
        # $query = "select * from test limit 9";
        //查询数据库语句
        $query = "select * from dog";
    for ($key = 1; $key < 10; $key++)
    {
        if (!$redis->get($key))
        {
            // 数据库连接信息
            $connect = mysql_connect('192.168.242.50','redis','redis@123');
            // 数据库表名
            mysql_select_db('mytest');
            $result = mysql_query($query);
            //如果没有找到$key,就将该查询sql的结果缓存到redis
            $arr = [];
            while ($row = mysql_fetch_assoc($result))
            {
            // 与数据库属性名要对应
            $redis->setex($row['id'],10,$row['name']);
            $arr[] = $row;
            }
            $myserver = 'mysql';
            $data = $arr;
            break;
        }
        else
        {
        $myserver = "redis";
        $data[$key] = $redis->get($key);
        }
    }
    echo $myserver;
    echo "<br>";
    for ($key = 1; $key < 10; $key++)
    {
        echo "number is <b><font color=#FF0000>$key</font></b>";
        echo "<br>";
        if ($myserver == "mysql") {
            $arr2 = array_map('end',$data);
            echo "name is <b><font color=#FF0000>$arr2[$key]</font></b>";
            echo "<br>";
        }
        else {
        echo "name is <b><font color=#FF0000>$data[$key]</font></b>";
        echo "<br>";
        }
    }

修改redis配置

vi /usr/local/redis-6.2.3/redis.conf

# 将其中的daemonize no值修改为如下
daemonize yes
# 此设置用于将redis以守护进程方式运行。

访问网页:http://192.168.242.51/redis.php

成功应该是刷新页面后mysql与redis都有概率出现。

Comments