linux企业运维--redis+nginx+php+mysql

本文介绍了Redis作为内存数据库与MySQL的关系型数据库在数据存储上的区别,并详细阐述了一个利用触发器、UDF函数、Gearman实现MySQL数据更新到Redis的异步同步过程。涉及的组件包括MariaDB、Nginx、PHP-FPM、Redis和Gearmand,通过这个方案,实现了数据的高效读写以及在MySQL更新后Redis的快速同步。

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

**redis:**内存型数据库(数据放在内存 AOF:增量更新 RDB:覆盖),有持久化功能,具备分布式特性,可靠性高,适用于对读写效率要求都很高,数据处理业务复杂和对安全性要求较高的系统。
**mysql:**数据放在磁盘,是关系型数据库,主要用于存放持久化数据,
redis和mysql的区别总结
类型上:从类型上来说,mysql是关系型数据库,redis是缓存数据库;
作用上:mysql用于持久化的存储数据到硬盘,功能强大,但是速度较慢;redis用于存储使用较为频繁的数据到缓存中,读取速度快

框架

client (server6): MySQL进行update操作,触发trigger。触发器会调用用户自定义udf函数json_object(用于转换数据,因为mysql与redis数据不兼容),之后把数据发给gearman(gman_server_set、gman_do_background)
server +worker(server4) :1.gearmand,监听4730端口
2. 用户端自己写的代码test.php(作用:从gearmand中获取任务,同步server2的redis)。php要求支持两个模块:gearman模块和redis模块。test.php首先会通过php-gearman模块获取任务,再通过php-redis模块更新redis server,以完成redis的更新。

环境部署

redis master (server2) -----缓冲层

请添加图片描述
在这里插入图片描述
将server2还原为master
在这里插入图片描述
可以正常读写
在这里插入图片描述

mariadb (server6)-----后台

请添加图片描述

nginx+php gearmand (server4)----前端

在这里插入图片描述
在这里插入图片描述
删除之前的mysql

安装php-fpm

后面所有的安装包都与此php版本相配

在这里插入图片描述
安装此模块
在这里插入图片描述
在这里插入图片描述
修改时区
在这里插入图片描述

在这里插入图片描述
设置组和用户
在这里插入图片描述
发现错误,php-fpm不能正常启动
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
检查了一圈错误,发现没有用户
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
确认有没有安装gcc make openssl-devel pcre-devel
gcc文件中去掉debug
在这里插入图片描述

安装nginx

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

测验test.php

在这里插入图片描述
在这里插入图片描述
说明test.php,服务端有问题
要连接redis和数据库,就可以访问
在这里插入图片描述
在这里插入图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
想要测试test.php,三台机子必须各自开启请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
编写server4中的显示页面文件
请添加图片描述

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
先添加test1–10
用于测试
请添加图片描述
导入test.sql
请添加图片描述
请添加图片描述
在redis上可以看到存的数据
请添加图片描述
请添加图片描述
删除后,页面刷新会再从mysql加载一遍,然后是redis

目前我们想redis更改一两个数据,从数据库中只需刷新一个就行,不需要全部刷新

异步更新

修改一下mysql中的 ID=1的数据
请添加图片描述
但是redis并没有同步修改,只有redis中把旧数据删了,才会重新从mysql中获取新的数据
请添加图片描述

redis 和mysql同步

mysql想要将变更数据传给远端,需要:
1、转换成json的数据结构
2、发布到分布式的分发系统上面
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
把.c文件编译到.so文件中
请添加图片描述
请添加图片描述
将.so拷贝到插件目录
注册函数
请添加图片描述
请添加图片描述
编译到插件目录
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
注册udf函数
请添加图片描述

CREATE FUNCTION gman_do_background RETURNS STRING SONAME 'libgearman_mysql_udf.so';
CREATE FUNCTION gman_servers_set  RETURNS STRING SONAME 'libgearman_mysql_udf.so';

查看
请添加图片描述
请添加图片描述
指定gearman的服务信息
请添加图片描述

请添加图片描述
查看触发器
请添加图片描述
只要触发,就会通过gman_servers_set 发送到server4的4730端口。此端口相当于服务端,mysql提交给此端口,会继续下发给worker
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

测试

请添加图片描述
后台运行worker
请添加图片描述
请添加图片描述
始终是redis
请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值