nginx redis mysql集成_Redis+mysql+NGINX+PHP

本文介绍了如何将Redis、MySQL与NGINX集成,利用PHP进行数据处理。文中详细讲解了Redis的特点、优势以及与其他key-value存储的对比。接着描述了实验环境的搭建,包括软件安装、配置及触发更新机制。通过Gearman实现数据库更新,并讨论了Gearman架构的角色和工作流程。整个集成方案有助于实现高效的数据管理和分布式负载均衡。
摘要由CSDN通过智能技术生成

一 Redis

1 Redis 简介

Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。

Redis 与其他 key - value 缓存产品有以下三个特点:

Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。

Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。

Redis支持数据的备份,即master-slave模式的数据备份。

2 Redis 优势

性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。

丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。

原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。

丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。

3 Redis与其他key-value存储比较

Redis有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径。Redis的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象。

Redis运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,因为数据量不能大于硬件内存。在内存数据库方面的另一个优点是,相比在磁盘上相同的复杂的数据结构,在内存中操作起来非常简单,这样Redis可以做很多内部复杂性很强的事情。同时,在磁盘格式方面他们是紧凑的以追加的方式产生的,因为他们并不需要进行随机访问。

二 实验环境:

1 软件的安装

1 安装php并修改时区

3b7143ac8815b32473129dac7e6c87c2.png

0f639988b8dba9c0414c058d55fef869.png

128cdb88c561b4792137e489921691ef.png

dde1a3d1d400245954654fd1e0688a76.png

查看其是否添加了mysql模块

564ada5527b3606312c1edce19b94ecb.png

2 安装和配置NGINX模块

dafbb4bafeb0d2d81eebc619c78348d4.png

12e4d028725d5c2fc2e2d27cc2bd0529.png

9dea4058c047150b99748057fc1e3697.png

613fd80a6cb8f4202206221baad68ce9.png

75af3cf9468f332a3f11216d33248bca.png

添加PHP主页:

0127c71fbffefda17e69303b453d112f.png

f613aa8d711ba060e40fdf2c6381bc36.png

查看:

032ed3c1d4dbd1f96fbf9cbf89b55234.png

3 PHP上加载redis相关的模块:

9a6aa571da3bca983cdc1ded99511b70.png

0241f80289f50684349b262efa85f6dc.png

8a6521ac9d4fe4e41868cc573515ab13.png

330841366bd8b51f73ba45ecf693e54b.png

80ac5967bd23f3577a161ce08a88ff15.png

41ec831e06735d51ba2cb44e1cf0b851.png

4d3ea08960ed2072dfea805896d45671.png

1852434a757d2283dcf2c3d590e2f0f8.png

b92b860a96044230b8f78fd51f02d624.png

a53174e821a72a7cc604d84ffc36ae3f.png

48218bda6fa20527e71839e5d20d2b6b.png

4 server2上安装redis

f62843c6262bc92d23622bdcff517a2e.png

d507a59767ebf0878beb094de41c0d60.png

5882a9c58e58fb8c396554472230b886.png

f16da910d248a6f8b6ee37e84ae078f9.png

368b1243553ef3583ebb9207cf30ee02.png

a0fdc35154a6d2fd72dd63e8f0cf3b6e.png

2bb8ebb82cbaa9113658f016b5409ed9.png

f77adff0fd57748d65e658a40e93f7a1.png

2 配置

1 server3 端配置链接redis和mysql

81cc828ecd96c21d585689cf3b39a2fe.png

2 server 1 端mysql 端配置:

8912468c90a5b0d053646ebd45ad13e7.png

89e425975b3cb1c4a03ff82bffaade83.png

62d9c0bea71425d995d59399327648f8.png

3 测试:

91d219e30558b89206c872146f2ad933.png

7eb0adbed09643f746c708d7a73fef5a.png

后端数据库修改数据:

84af1979a5cde8ec02d62658fba00301.png

0f9aa208a35e61a2d685b8634523813c.png

前端查看:

a179053c378b5ff61eddee94f15eda32.png

没有变化,由于没有触发更新机制,因此没有反应:

3 配置触发更新:

gearman 架构图:

1e4f07c7aaf9f9c926ac72fc1881bb0f.png

Gearman 是一个支持分布式的任务分发框架:

Gearman Job Server:Gearman 核心程序,需要编译安装并以守护进程形式运行在后台。

Gearman Client:可以理解为任务的请求者。

Gearman Worker:任务的真正执行者,一般需要自己编写具体逻辑并通过守护进程方式

运行,Gearman Worker 接收到Gearman Client 传递的任务内容后,会按顺序处理。

大致流程:

下面要编写的mysql 触发器,就相当于Gearman 的客户端。修改表,插入表就相当于直接

下发任务。然后通过lib_mysqludf_json UDF 库函数将关系数据映射为JSON 格式,然后

在通过gearman-mysql-udf 插件将任务加入到Gearman 的任务队列中,最后通过

redis_worker.php,也就是Gearman 的worker 端来完成redis 数据库的更新。

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

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

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

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

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

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

1 gearmand 的安装:

负责接收前端gearman client 的数据,以守护进行的形式存在

74758c04c3330b82f344e04473dcbdcd.png

5b35d58f425638b6fc20795a4d882089.png

2 gearman 安装,用于php的插件,

a9c250b1dd9e055b2a37c51c89ae4393.png

c2e26de285ec8f139cdbe9911cfd5418.png

7cbca46162c8c0d627f2c011c07757c0.png

54f3798c2e00030ba0c7765f959f7dad.png

2a7e56ca36dd72bd10b9675a38c37be1.png

查看模块是否安装成功

e1ff1eb0779d00c34b77717d971761ff.png

3 配置PHP链接Redis:

421ea486fd81be053daa853b0cf68dc1.png

a5515f910230ec2e05ccb2ef44eb0571.png

通过指定redis服务器IP地址和端口的方式进行指定

89d77f09de6e8160ba2a2495dcc50856.png

打入后台

82eca461413183f4783cb4ac14014f52.png

将配置文件发往mysql数据所在的server1

4c250c00b58539a607233a38a47254b1.png

4 安装mysql相关配置包

1 lib_mysqludf_json UDF库函数将关系数据映射为JSON 格式。通常,数据库中的数据映

射为JSON 格式,是通过程序来转换的。

0770475bb678b6d77d3614004be8abfd.png

a8f9d59b68e45bd6a9d2b60bbd1d524a.png

78453189c4c3f25cde41b1f136ff034b.png

279bd0c03a12342f675d8e08ecc575e2.png

bd222df3b2aab8e58c37f08721d61874.png

fc536f1c586b2311beb5746a4a42ae19.png

2 安装gearman-mysql-udf:

这个插件是用来管理调用Gearman 的分布式的队列。

192643e383ce5a21210c7153e1212118.png

f8bc07ecf0378a2af4fa46f83afc4d08.png

5 修改为创建触发器模板

bdd81667c985ea8e0f52121514fe088d.png

d26c1bd468104d71602d463aa36fa43e.png

6 注册UDF函数:

c97c63e4f7812aa2027e66b916c34a47.png

7 创建触发器并查看其状态

1ef40c451403c2128fd82daf8fba2ce6.png

8 服务端进行数据插入测试

b75aa44f50ce20a04e08d9d60a482b4c.png

客户端查看是否插入成功

98fced9154d556a0a9e3029328796a60.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值