缓存机制: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 redis@'%' identified by 'redhat';-->flush privileges;
- 将测试数据库导入:mysql -predhat < test.sql
- 测试
机制:redis里面有数据就从redis里面拿,没有就去mysql里面去取。
在浏览器上输入安装nginx的虚拟机的ip:浏览的是mysql的数据库的数据,刷新后浏览的是redis的数据,之后刷新一直访问的是redis的数据,因为有了缓存。