当客户端访问一个网站,先在redis里读数据,因为快,redis没有才去mysql读,读完保存在redis里,然后返回客户端,下次再读就快。 模拟这个环境。 实验所需:需要三台虚拟机。 server1充当nginx,server2,server3
(1)先在server1上进行配置 我们可以重新准备虚拟机,也可以在之前的server1上进行实验,防止之前的实验环境会对此实验造成影响,所以将之前的所有进程停止 删除后查看进程
跟之前配置nginx服务一样,在server1上将nginx配置好 可以在nginx官方网站下载nginx的安装包
编译成功后进行安装 编辑nginx的配置文件,将nginx的用户改为nginx,并加入php发布文件 启动nginx,和php,我们需要php提供数据 (2)在server2上进行配置 在server2上配置redis为master,因为之前做了主从,关闭了server1的redis 并修改配合文件,删除之前的主从配置 server2的redis可以写。 (3)在server1上添加测试页面 让nginx默认访问index.php 将提前转备好的php页面mv到nginx的默认发布目录 (4)在server3上配置 server3上是配置mysql,为了防止之前的实验环境对此次的实验有所影响,所以,我们需要检查,如果有多于内容,全部清除 在此次实验中,我们只需要使用mariadb,不需要mysql 清除原来数据目录里的内容 启动mariadb 安全初始化 这里密码可以设置为简单的,如chen 登录数据库,授权所有用户
create database test; grant all on test.* to redis@’%’ identified by ‘chen’; flush privileges;
(5)修改server1上nginx的发布文件index.php (6)为server3上的mysql的test.sql库加入一些数据方便我们测试 注释掉的目前用不到,是创建查询的触发器的 导入数据mysql -pchent < test.sql (7)简单测试 浏览器访问测试 172.25.10.1 可以看到导入的数据 再次刷新,可以看到后面就从redis读取数据 之后再刷新,读取的只是redis的缓存! 也可以在mysql查看数据
那么,问题来了,当前的数据只是我们固定好了的,那么如果此时mysql数据发生变更,redis会同步吗?
(1)在server3上的mysql修改数据
(2)在server1上配置gearmand(任务分发系统)
(3)在server3上解压lib_mysqludf_json-master.zip 确认server3安装mariadb-devel
编译模块 注册udf函数