redis服务器环境下mysql实现lamp架构缓存
ip | 角色 | 环境 |
---|---|---|
192.168.242.49 | 缓存服务器 | Redis2.2.7 |
192.168.242.50 | mysql服务器 | mysql |
192.168.242.51 | web端 | php |
- ***默认已安装好redis,mysql
三台服务器时间同步(非常重要)
# 下载ntpdate
yum -y install ntp ntpdate
# 同步时钟
ntpdate cn.pool.ntp.org
# 将系统时钟的时间设置到硬件时钟
hwclock --systohc
redis配置(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
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是否关闭
编写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都有概率出现。