gearman是怎样完成redis缓存文件mysql的
时间:2021-04-21

文中关键给大伙儿简易讲下gearman是怎样完成redis缓存文件mysql的,有关专业名词大伙儿能够网上查下或是找一些有关书本填补一下,这儿也不涉足了,大家就奔向主题风格吧,期待gearman是怎样完成redis缓存文件mysql的本文能够给大伙儿产生一些具体协助。

Gearman介绍:

Gearman是一个适用分布式系统的每日任务派发架构。设计方案简约,得到了十分普遍的适用。一个典型性的Gearman运用包含下列这种一部分:

1、Gearman Job Server:Gearman关键程序流程,以守护进程方式运作在后台管理

2、Gearman Client:能够了解为每日任务的揽收员,例如我想在后台管理实行一个邮件发送的每日任务,能够在程序流程中启用一个Gearman Client并传到电子邮件的信息内容,随后就可以将实行結果马上展现给客户,而每日任务自身会渐渐地在后台程序。

3、Gearman Worker:每日任务的真真正正实施者,一般必须自身撰写实际逻辑性并根据守护进程方法运作,4、Gearman Worker接受到Gearman Client传送的每日任务內容后,会按序解决。

设计理念:

最先运用mysql UDF(根据了lib_mysqludf_json和gearman-mysql-udf的组成完成)在mysql中的数据信息发生改变时打动触发器原理将数据信息传到Gearman中,这时候的mysql等同于Gearman的clinet。随后运作自身撰写的php程序流程做为worker,将Gearman中的数据信息传入Redis中去,这时候的Redis等同于是Gearman的consumer。

gearman是怎样完成redis缓存文件mysql的

执行全过程:

1、 配备YUM源,安裝gearmand

http://down.51cto.com/data/2274661 ##YUM包文档配备,和GEARMAND 必须的包

1、yuminstall-yphp-pecl-gearmanlibgearmanlibgearman-develgearmandnc

2、运行服务项目/etc/init.d/gearmandstart

3、查验情况是不是OK netstat-alnutp|grepgearman

###gearman默认设置应用的端口号为4370

2、 安裝数据库查询、php-MySQL软件

1、 数据库安装(略)

2、 软件安装yum -yinstall php-mysql #安裝这一软件主要是用PHP来数据采集载入实际操作

3、 运行MySQL

3、在数据云服务器上安装lib_mysqludf_json

1、 unzip master.zip

2、 cd lib_mysqludf_json-master

3、 rm -rf lib_mysqludf_json.so

4、 gcc $(mysql_config --cflags) -shared -fPIC -o lib_mysqludf_json.solib_mysqludf_json.c

##把再次编译程序的lib_mysqludf_json.so 拷到/usr/local/mysql/lib/plugin文件目录下

4、在数据云服务器上安装gearman-mysql-udf

1、 解压包tarxfgearman-mysql-udf-0.6.tar.gz-C./

2、 Cd gearman-mysql-udf-0.6

3、 编译程序./configure--with-mysql=/usr/local/mysql/bin/mysql_config --libdir=/usr/local/mysql/lib/plugin/

#留意它是自身界定的数据信息安装文件的文件目录,若用YUM包安裝则用

./configure --with-mysql=/usr/bin/mysql_config --libdir=/usr/lib64/plugin/

编译程序出错:configure: error:At least version 0.33 of libgearman is required for gearman-mysql-udf

安裝:yum -y installlibgearman-devel #因为原先包版本号低,重装个就可以。

5、 安裝make make install ##软件安裝到MySQL的软件文件目录下。

6、进到数据库查询,建立相匹配的function,trigger及设定gearmanserver信息内容

1、createfunction json_object returns string soname lib_mysqludf_json.so

2、create functiongman_do_background returns string soname libgearman_mysql_udf.so

3、createfunction gman_servers_set returns string soname libgearman_mysql_udf.so;

7、安裝redis#提议用3.0.7的版本号且安装php联接redis的驱动器,接口测试用yum安装redis

1、yuminstallphp-pecl-redisredis–y

2、运行redis服务项目servie redis start

3、登陆redis简易认证

root@nod1 gearman-mysql-udf-0.6]#redis-cli

redis 127.0.0.1:6379 keys *

1) counter:__rand_int__

2) key:__rand_int__

3) save

4) mylist

8、登陆数据库查询,依据业务流程对某一库下的某一表加上触发器原理,且设定gearman server的信

1、/usr/local/mysql/bin/mysql-S /tmp/mysql3306.sock -p

2、create database wy

3、create table test(idint primary key,name char(20))

4、设定gearman server信息内容##十分关键,若不实行会造成 数据信息没法搜集到REDIS中来

MariaDB [wy] SELECTgman_servers_set(127.0.0.1:4730);

------------------------------------

| gman_servers_set(127.0.0.1:4730) |

------------------------------------

| 127.0.0.1:4730 |

------------------------------------

9、 加上触发器原理

DELIMITER $$

CREATE TRIGGER datatoredis AFTER UPDATE ON test FOR EACH ROW BEGIN

SET@ret=gman_do_background(syncToRedis, json_object(NEW.id AS `id`, NEW.name AS`name`));

END$$

DELIMITER ;

10、 撰写一个worker程序流程,承担将gearman中的数据信息传到到redis中去:

文件夹名称:redis_workder.php

1、撰写:

2、运行phpredis_worker.php

运行出错:PHPWarning: GearmanWorker::work():send_packet(GEARMAN_ERRNO) Failed to send server-options packet -libgearman/connection.cc:485 in /home/redis_worker.php on line 8

解决方案:/usr/sbin/gearmand -d -L 127.0.0.1 -p 4730

随后在运行:nohup php redis_worker.php 维持后台程序

运行gearmand出错/var/log/mearmond.log不正确未处理

ERROR 2016-12-28 07:46:38.000000 [main ] socket()(Address family not supported by protocol) -libgearman-server/gearmand.cc:468

ERROR 2016-12-28 07:46:38.000000 [ main ] gearmand_sockfd_close() called with aninvalid socket - libgearman-server/io.cc:933

小结:

完成检测在MYSQL数据库查询载入数据信息,随后观查REDIS是不是有数据信息,若有则取得成功,这类方法高效率是极低的,在100W数据信息,数据库查询载入特性减少十分大。

gearman是怎样完成redis缓存文件mysql的就先给大伙儿讲到这儿,针对其他有关难题大伙儿要想掌握的能够不断关心大家的行业动态。大家的版块內容每日都是会捕获一些行业动态及技术专业各种知识分享给大伙儿的。