Redis(四)结合lnmp环境Redis 作 mysql 的缓存服务器

实验环境

server1 (172.25.254.10) nginx php
server2 (172.25.254.20) mariadb
server3 (172.25.254.30) redis

Redis结合lnmp

数据访问流程:client-> app -> redis -> mysql-> redis -> client
客户端用app访问,先在redis 里读数据,因为快,redis没有才去mysql读,读完保存在 redis里,然后返回客户端,下次再读就快

(1)停止server1和server3上的redis服务
Redis(四)结合lnmp环境Redis 作 mysql 的缓存服务器
Redis(四)结合lnmp环境Redis 作 mysql 的缓存服务器
server3之前做过主从,所以现在要关闭后修改配置文件在开启
Redis(四)结合lnmp环境Redis 作 mysql 的缓存服务器

(2)在server1上安装并配置nginx

Redis(四)结合lnmp环境Redis 作 mysql 的缓存服务器
Redis(四)结合lnmp环境Redis 作 mysql 的缓存服务器
Redis(四)结合lnmp环境Redis 作 mysql 的缓存服务器
修改nginx配置文件
Redis(四)结合lnmp环境Redis 作 mysql 的缓存服务器
Redis(四)结合lnmp环境Redis 作 mysql 的缓存服务器
Redis(四)结合lnmp环境Redis 作 mysql 的缓存服务器
(3)在server1上安装并配置php
安装
Redis(四)结合lnmp环境Redis 作 mysql 的缓存服务器
Redis(四)结合lnmp环境Redis 作 mysql 的缓存服务器

开启
Redis(四)结合lnmp环境Redis 作 mysql 的缓存服务器
(4)让server2做mysql
Redis(四)结合lnmp环境Redis 作 mysql 的缓存服务器
开启并初始化
Redis(四)结合lnmp环境Redis 作 mysql 的缓存服务器
登录数据库,授权用户
Redis(四)结合lnmp环境Redis 作 mysql 的缓存服务器
(5)修改server1上nginx的发布文件test.php
Redis(四)结合lnmp环境Redis 作 mysql 的缓存服务器
Redis(四)结合lnmp环境Redis 作 mysql 的缓存服务器
(6)为server2上的mysql的test库加入一些数据

Redis(四)结合lnmp环境Redis 作 mysql 的缓存服务器
Redis(四)结合lnmp环境Redis 作 mysql 的缓存服务器
(7)浏览器访问测试172.25.254.10
可以看到导入的数据
Redis(四)结合lnmp环境Redis 作 mysql 的缓存服务器
但是刷新一次后,可以看到后面就从redis读取数据
Redis(四)结合lnmp环境Redis 作 mysql 的缓存服务器

这个时候有个问题,如果此时mysql数据发生变更,redis会同步吗?

(1)在server2上
Redis(四)结合lnmp环境Redis 作 mysql 的缓存服务器
变更后发现,redis里没有变,浏览器也看不到变化,但是在redis里做的变化能看到
Redis(四)结合lnmp环境Redis 作 mysql 的缓存服务器
Redis(四)结合lnmp环境Redis 作 mysql 的缓存服务器
要解决这种问题就要安装一个gearmand

gearmand简介: Gearmand 是一个用来把工作委派给其它机器、分布式的调用更适合做某项工作的机器、并
发的做某项工作在多个调用间做负载均衡、或用来调用其它语言的函数的系统。 简单来讲,就是客户端程序把请求提交给gearmand,gearmand 会把请求转发给合适的 worker 来处理这个请求,最后还通过 gearmand 返回结果。 运行流程:
Client–> Job --> Worker
1、Client 请求发起者,客户端程序可以是任何一种语言,C 、PHP 、Perl 、Python 等。
2、Job 请求调度者,负载协调把 Client 发出的请求转发给合适的 Worker。
3、Worker请求处理者,处理 Job 分发来的请求,可以是任何一种语言

(1)在server1上启动
Redis(四)结合lnmp环境Redis 作 mysql 的缓存服务器
(2)在server2上
解压lib_mysqludf_json-master.zip
Redis(四)结合lnmp环境Redis 作 mysql 的缓存服务器
Redis(四)结合lnmp环境Redis 作 mysql 的缓存服务器
安装mariadb-devel
Redis(四)结合lnmp环境Redis 作 mysql 的缓存服务器
编译模块并将模块放到mysql插件目录
Redis(四)结合lnmp环境Redis 作 mysql 的缓存服务器
查看并注册udf函数
Redis(四)结合lnmp环境Redis 作 mysql 的缓存服务器
安装插件管理gearman的分布式队列
Redis(四)结合lnmp环境Redis 作 mysql 的缓存服务器
会报错,因为版本太低了
解决问题
Redis(四)结合lnmp环境Redis 作 mysql 的缓存服务器
Redis(四)结合lnmp环境Redis 作 mysql 的缓存服务器
Redis(四)结合lnmp环境Redis 作 mysql 的缓存服务器
Redis(四)结合lnmp环境Redis 作 mysql 的缓存服务器

注册udf函数
Redis(四)结合lnmp环境Redis 作 mysql 的缓存服务器
指定gman服务信息
Redis(四)结合lnmp环境Redis 作 mysql 的缓存服务器
编写mysql触发器并导入
Redis(四)结合lnmp环境Redis 作 mysql 的缓存服务器
Redis(四)结合lnmp环境Redis 作 mysql 的缓存服务器
(3)编写gman的worker端(server1)

修改完成后,后台运行worker
Redis(四)结合lnmp环境Redis 作 mysql 的缓存服务器
Redis(四)结合lnmp环境Redis 作 mysql 的缓存服务器
(4)测试

修改数据库内容
Redis(四)结合lnmp环境Redis 作 mysql 的缓存服务器
在redis上查看
Redis(四)结合lnmp环境Redis 作 mysql 的缓存服务器
页面查看,数据同步
Redis(四)结合lnmp环境Redis 作 mysql 的缓存服务器