缓存机制:client --> app --> redis --> mysql(redis没有缓存的数据时再访问mysql)–> redis --> client
实验环境
- rhel7.3
| 主机名 | IP |
|---|---|
| server1 | 172.25.60.1(nginx 服务器) |
| server2 | 172.25.60.2(redis ) |
| server3 | 172.25.60.3(mysql) |
redis 结合lnmp架构做mysql的缓存服务器
- 先将上个实验中的redis集群节点服务全部关闭
killall -9 redis-server
如果没有killall指令,则需要先安装
- server1(nginx服务器(web))
- 先查看系统中是否存在nginx,如果存在,建议重新用一个新的虚拟机做;
如果系统中不存在nginx,先下载安装nginx:tar zxf nginx-1.16.0.tar.gz - 安装依赖性:
yum install pcre-devel zlib-devel gcc -y - 进入nginx-1.16.0后,编译配置文件vim auto/cc/gcc,先将debug注释掉后编译:
./configure --prefix=/usr/local/nginx make && make install- 编辑配置文件 :
vim /usr/local/nginx/conf/nginx.conf - 将php打开 将index.php添加上
- 开启nginx:
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/conf/sbin/nginx
- 安装php,将所需的安装包下载好,并安装:
yum install -y * - 开启php:
systemctl start php-fpm - 通过端口查看是否开启(9000端口):
netstat -tnlp - 下载测试页面test.php并重新命名为index.php:
mv test.php index.php - 修改测试页面的index.php 将redis和mysql的ip更改好,数据库密码设置好
- 重加载nginx:
/usr/local/nginx/sbin/nginx -s reload - server2 ( redis )
- 如果之前做过redis直接开启就好:/etc/init.d/redis_6379 start
- 将之前的做的redis主从复制的编译文件删除vim /etc/redis/6379.conf (删除最后一行)
- 进入redis测试:
redis-cli --> get name(如果有值就删除del name) - 重启:/etc/init.d/redis_6379 restart
- 如果之前没有安装,则重新下载安装包,解压编译安装,修改配置文加vim /etc/redis/6379.conf --> bind 0.0.0.0 修改完后重启
- server3( mysql )
- 查看之前是否安装mysql : rpm -qa | grep mysql
- 如果已安装就删除: rpm -e
rpm -qa | grep mysql--nodeps - 将以前安装过mysql编译的文件删除:cd /var/lib/mysql/ --> rm -rf *
- 安装mariadb:yum install -y mariadb-server
- 开启mariadb:systemctl start mariadb
- 初始化:mysql_secure_installation
- 修改密码(redhat)
- 进入数据库,创建test数据库
- 创建授权用户,并刷新授权表:
grant all on test.* to [email protected]'%' identified by 'redhat';-->flush privileges; - 将测试数据库导入:mysql -predhat < test.sql
-
测试
机制:redis里面有数据就从redis里面拿,没有就去mysql里面去取。
在浏览器上输入安装nginx的虚拟机的ip:浏览的是mysql的数据库的数据,刷新后浏览的是redis的数据,之后刷新一直访问的是redis的数据,因为有了缓存。