企业运维——redis做mysql的缓存服务器、配置gearman实现数据同步

本文详细介绍了如何使用Redis作为MySQL的缓存服务器,以提升查询效率。首先配置Redis服务器作为MySQL的缓存,当Redis中无数据时查询MySQL。接着,通过Gearman实现MySQL数据变更时自动同步到Redis,确保数据一致性。涉及到的技术包括LAMP架构、Nginx配置、PHP-FPM安装以及Gearman的客户端和工作进程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、redis做mysql的缓存服务器

server2为redis server

 server4作为数据库端,安装mariadb-server

server3安装lamp架构

 首先安装nginx

 做软连接,并更改主配置文件

 安装php-fpm

进行相关配置

二、配置gearman实现Redis和MySQL数据同步

gearman介绍

配置过程

测试

整体过程


  • 本文的主要目的即介绍上文说的这样一种方法,采用redis nosql数据库作为Mysql数据库的缓存,在查找的时候,首先查找redis缓存,如果找到则返回结果;如果在redis中没有找到,那么查找Mysql数据库,找到的话则返回结果并且更新redis;如果没有找到则返回空。对于写入的情况,直接写入mysql数据库,mysql数据库通过触发器及UDF机制自动把变更的内容更新到redis中。

一、redis做mysql的缓存服务器

server2为redis server

必须为master,要能写。

 

修改后查看server2状态为master

 server4作为数据库端,安装mariadb-server

启动maridb服务并对test授权

server3安装lamp架构

server3之前没有安装过lamp架构,因此我们停掉redis,并设置开机不自启,利用他干净的环境安装lamp架构。

 首先安装nginx

 做软连接,并更改主配置文件

 将文件的php打开。

 之后重启,查看端口,此时并没有9000端口

 安装php-fpm

 

 此时php-mysql安装成功,但还没有redis

 此时有依赖性需要解决

再次查看php-redis也安装成功。此时便可以启动了。

 此时查看端口,9000已经启动

进行相关配置

 将test.php放到默认发布目录里。

server4中,编写mysql触发器脚本test.sql,并导入test数据库 

 

查看数据库数据,创建了1-9

 

浏览器访问172.25.0.3/test.php 第一次访问的为mysql

刷新就会变成redis,刚开始redis没有数据会先从数据库取,刷新后,便从redis中获取。

在server2master主机中

server4做为数据库更改id1后,查看已经变更

 

此时查看server2作为redis的id1并没发生变化,所以是不同步的

 

因为在test.php中写明先找redis拿数据,只要有就不会找数据库,此时变更便不会同步。

 

当redis中没有时才会找mysql中拿。现在测试删除redis的id1

此时再次访问,刷新,从mysql重新获得成为westos

 

到这里,我们已经实现了redis作为mysql的缓存服务器,但是如果更新了mysql,redis中仍然会有对应的KEY,数据就不会更新,此时就会出现mysql和redis数据不一致的情况。所以接下来就要通过mysql触发器将改变的数据同步到redis中.

二、配置gearman实现Redis和MySQL数据同步

gearman介绍

Gearman是一个支持分布式的任务分发框架:
   Gearman Job Server:Gearman核心程序,需要编译安装并以守护进程形式运行在后台。
   Gearman Client:可以理解为任务的请求者。
   Gearman Worker:任务的真正执行者,一般需要自己编写具体逻辑并通过守护进程方式运行,Gearman Worker接收到Gearman Client传递的任务内容后,会按顺序处理。

一个Gearman请求的处理过程涉及三个角色:Client -> Job -> Worker。

Client:请求的发起者,可以是 C,PHP,Perl,MySQL UDF 等等。

Job:请求的调度者,用来负责协调把 Client 发出的请求转发给合适的 Worker。

Worker:请求的处理者,可以是 C,PHP,Perl 等等。

因为 Client,Worker 并不限制用一样的语言,所以有利于多语言多系统之间的集成。

甚至我们通过增加更多的 Worker,可以很方便的实现应用程序的分布式负载均衡架构。

大致流程:
下面要编写的mysql触发器,就相当于Gearman的客户端。修改表,插入表就相当于直接下发任务。然后通过lib_mysqludf_json UDF库函数将关系数据映射为JSON格式,然后在通过gearman-mysql-udf插件将任务加入到Gearman的任务队列中,最后通过redis_worker.php,也就是Gearman的worker端来完成redis数据库的更新。

mysql中更改id1 为redhat,查看数据库发生变更,但是页面访问并没有。

配置过程

 在server4上,解压lib_mysqludf_json-master.zip,并安装gcc

 

安装开发包

 将lib_mysqludf_json-master/lib_mysqludf_json.so模块拷贝到/usr/lib64/mysql/plugin/插件目录下,通过lib_mysqludf_json UDF 库函数将关系映射为JISON格式 注册udf函数,并查看。

安装libgearman安装包,并安装管理gearman的分布式队列插件,进行编译和安装 

 有依赖性,下载这几个rpm包,并安装

再次执行 ./configure  --libdir=/usr/lib64/mysql/plugin/

 之后编译安装

再次注册两个udf函数

 查看server3端口

 server3下载安装gearman(gman的worker端)

开启gearmand服务并查看其端口号4730是否开启

 在server4指定gearman的服务信息 

编写mysql触发器脚本test.sql,并导入test数据库 ,查看触发器设置成功。

编写worker.php脚本,并放到/usr/local目录下 

此时有redis还没有gearman,安装

在后台运行worker 

测试

在数据库更改

 

 

整体过程

 

当数据库有变更时,会通过udf函数结合触发器 ,将数据发送给4730(gearmand),它再分发给worker。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值