redis服务(2)

article/2025/8/28 16:31:29

 配置 gearman 实现数据同步

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

Gearman Job Server:Gearman核心程序,以守护进程形式运行在后台。
Gearman Client:可以理解为任务的收件员,比如我要在后台执行一个发送邮件的任务,可以在程序中调用一个Gearman Client并传入邮件的信息,然后就可以将执行结果立即展示给用户,而任务本身会慢慢在后台运行。
Gearman Worker:任务的真正执行者,一般需要自己编写具体逻辑并通过守护进程方式运行。
Gearman Worker接收到Gearman Client传递的任务内容后,会按顺序处理。

 首先利用mysql UDF(通过了lib_mysqludf_json和gearman-mysql-udf的组合实现)在mysql中的数据发生改变时触动触发器将数据传入Gearman中,这时的mysql相当于Gearman的clinet。然后运行自己编写的php程序作为worker,将Gearman中的数据传到Redis中去,这时的Redis相当于是Gearman的consumer。

安装 lib_mysqludf_json

lib_mysqludf_json UDF 库函数将关系数据映射为 JSON 格式。通常,数据库中的数据映
射为 JSON 格式,是通过程序来转换的。

需要安装gcc、mariadb-devel和lib_mysqludf_json-master

[root@server4 ~]# yum install -y mariadb-devel
[root@server4 ~]# ls
anaconda-screenshots  lib_mysqludf_json-master.zip  test.sql
[root@server4 ~]# yum install -y unzip
[root@server4 ~]# unzip lib_mysqludf_json-master.zip 
[root@server4 ~]# cd lib_mysqludf_json-master/
[root@server4 lib_mysqludf_json-master]# yum install -y gcc  ##安装gcc

 [root@server4 lib_mysqludf_json-master]# ls
[root@server4 lib_mysqludf_json-master]# gcc $(mysql_config --cflags) -shared -fPIC -o lib_mysqludf_json.so lib_mysqludf_json.c

[root@server4 plugin]# pwd      ##plugin所在目录
/usr/lib64/mysql/plugin
[root@server4 plugin]# mysql
MariaDB [(none)]> show global variables like 'plugin_dir';
+---------------+--------------------------+
| Variable_name | Value                    |
+---------------+--------------------------+
| plugin_dir    | /usr/lib64/mysql/plugin/ |
+---------------+--------------------------+
1 row in set (0.00 sec)MariaDB [(none)]> exit
Bye
[root@server4 plugin]# cd
[root@server4 ~]# cd lib_mysqludf_json-master/
[root@server4 lib_mysqludf_json-master]# ls
lib_mysqludf_json.c     lib_mysqludf_json.so   README.md
lib_mysqludf_json.html  lib_mysqludf_json.sql
[root@server4 lib_mysqludf_json-master]# cp lib_mysqludf_json.so /usr/lib64/mysql/plugin/
[root@server4 lib_mysqludf_json-master]# cd /usr/lib64/mysql/plugin/
[root@server4 plugin]# ls

 

 

[root@server4 plugin]# mysqlMariaDB [(none)]> CREATE FUNCTION json_object RETURNS STRING SONAME 'lib_mysqludf_json.so';    ##注册 UDF 函数MariaDB [(none)]> select * from mysql.func;

安装 gearman-mysql-udf

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

Gearman MySQL UDF in Launchpad

[root@server4 ~]# tar zxf gearman-mysql-udf-0.6.tar.gz 
[root@server4 ~]# ls
anaconda-screenshots                    libgearman-devel-1.1.12-18.el7.x86_64.rpm
gearman-mysql-udf-0.6                   lib_mysqludf_json-master
gearman-mysql-udf-0.6.tar.gz            lib_mysqludf_json-master.zip
libevent-devel-2.0.21-4.el7.x86_64.rpm  test.sql
libgearman-1.1.12-18.el7.x86_64.rpm
[root@server4 ~]# yum install -y libgearman-* libevent-*
[root@server4 ~]# cd gearman-mysql-udf-0.6/
[root@server4 gearman-mysql-udf-0.6]# ls
aclocal.m4  ChangeLog  config.h.in  configure     COPYING               m4           Makefile.in  README
AUTHORS     config     config.log   configure.ac  libgearman_mysql_udf  Makefile.am  NEWS
[root@server4 gearman-mysql-udf-0.6]# ./configure --libdir=/usr/lib64/mysql/plugin/ --with-mysql   ##编译[root@server4 gearman-mysql-udf-0.6]# make && make install

 

 注册 UDF 函数

[root@server4 gearman-mysql-udf-0.6]# cd /usr/lib64/mysql/plugin
[root@server4 plugin]# ls
[root@server4 plugin]# mysql  
MariaDB [(none)]> CREATE FUNCTION gman_do_background RETURNS STRING SONAME 'libgearman_mysql_udf.so';MariaDB [(none)]> CREATE FUNCTION gman_servers_set RETURNS STRING SONAME 'libgearman_mysql_udf.so';MariaDB [(none)]> select * from mysql.func;  ##查看函数

 在server2中:

[root@server2 ~]# ls
anaconda-screenshots                 php-pecl-igbinary-1.2.1-1.el7.x86_64.rpm
gearmand-1.1.12-18.el7.x86_64.rpm    php-pecl-redis-2.2.8-1.el7.x86_64.rpm
libgearman-1.1.12-18.el7.x86_64.rpm  redis-6.2.4
mysql-5.7.31                         redis-6.2.4.tar.gz
mysql-boost-5.7.31.tar.gz            test
nginx-1.20.2                         test.php
nginx-1.20.2.tar.gz                  test.sql
php-fpm-5.4.16-46.el7.x86_64.rpm
[root@server2 ~]# yum install gearmand-1.1.12-18.el7.x86_64.rpm  libgearman-1.1.12-18.el7.x86_64.rpm 
[root@server2 ~]# systemctl start gearmand.service 
[root@server2 ~]# netstat -antlup

 server2中要开启4730端口:

在server4中:

MariaDB [(none)]> SELECT gman_servers_set('172.25.52.2:4730');   ##指定 gearman 的服务信息

 编写 mysql 触发器

[root@server4 ~]# vim test.sql 
use test;
#CREATE TABLE `test` (`id` int(7) NOT NULL AUTO_INCREMENT, `name` char(8) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
#INSERT INTO `test` VALUES (1,'test1'),(2,'test2'),(3,'test3'),(4,'test4'),(5,'test5'),(6,'test6'),(7,'test7'),(8,'test8'),(9,'test9');DELIMITER $$
CREATE TRIGGER datatoredis AFTER UPDATE ON test FOR EACH ROW BEGINSET @RECV=gman_do_background('syncToRedis', json_object(NEW.id as `id`, NEW.name as `name`)); END$$
DELIMITER ;
[root@server4 ~]# mysql < test.sql 
[root@server4 ~]# mysql
MariaDB [(none)]> SHOW TRIGGERS FROM test;

 

编写 gearman 的 worker 端( 在server2中)

[root@server2 ~]# ls
anaconda-screenshots                 nginx-1.20.2.tar.gz                       test
gearmand-1.1.12-18.el7.x86_64.rpm    php-fpm-5.4.16-46.el7.x86_64.rpm          test.php
libgearman-1.1.12-18.el7.x86_64.rpm  php-pecl-igbinary-1.2.1-1.el7.x86_64.rpm  test.sql
mysql-5.7.31                         php-pecl-redis-2.2.8-1.el7.x86_64.rpm     worker.php
mysql-boost-5.7.31.tar.gz            redis-6.2.4
nginx-1.20.2                         redis-6.2.4.tar.gz
[root@server2 ~]# vim worker.php 
<?php
$worker = new GearmanWorker();
$worker->addServer();
$worker->addFunction('syncToRedis', 'syncToRedis');$redis = new Redis();
$redis->connect('172.25.52.3', 6379);while($worker->work());
function syncToRedis($job)
{global $redis;$workString = $job->workload();$work = json_decode($workString);if(!isset($work->id)){return false;}$redis->set($work->id, $work->name);
}
?>
[root@server2 ~]# php -m | grep redis
redis
[root@server2 ~]# yum install php-pecl-gearman-1.1.2-1.el7.x86_64.rpm -y
[root@server2 ~]# php -m | grep redis
redis
[root@server2 ~]# php -m | grep gearman
gearman
[root@server2 ~]# systemctl reload php-fpm
[root@server2 ~]# ls
anaconda-screenshots                     php-pecl-igbinary-1.2.1-1.el7.x86_64.rpm
gearmand-1.1.12-18.el7.x86_64.rpm        php-pecl-redis-2.2.8-1.el7.x86_64.rpm
libgearman-1.1.12-18.el7.x86_64.rpm      redis-6.2.4
mysql-5.7.31                             redis-6.2.4.tar.gz
mysql-boost-5.7.31.tar.gz                test
nginx-1.20.2                             test.php
nginx-1.20.2.tar.gz                      test.sql
php-fpm-5.4.16-46.el7.x86_64.rpm         worker.php
php-pecl-gearman-1.1.2-1.el7.x86_64.rpm
[root@server2 ~]# mv worker.php /usr/local/
[root@server2 ~]# which php
/usr/bin/php
[root@server2 ~]# php /usr/local/worker.php   ##开启

 测试:

在server4中:MariaDB [(none)]> use test
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -ADatabase changed
MariaDB [test]> update test set name='gyy' where id=1;
Query OK, 1 row affected (0.06 sec)
Rows matched: 1  Changed: 1  Warnings: 0MariaDB [test]> select * from test;

 在server3中(redis-cli)

127.0.0.1:6379> get 1
"gyy"
127.0.0.1:6379> get 2
"test2"
127.0.0.1:6379> get 1
"gyy"
127.0.0.1:6379> get 1
"gyy"
127.0.0.1:6379> get 1
"gyy"
127.0.0.1:6379> get 1
"cyy"
127.0.0.1:6379> get 1
"cyy"
127.0.0.1:6379> 

 浏览器访问:  http://172.25.52.2/test.php 

 在数据库中修改:

MariaDB [test]> update test set name='cyy' where id=1;
Query OK, 1 row affected (0.03 sec)
Rows matched: 1  Changed: 1  Warnings: 0MariaDB [test]> 

 在redis查看:

  浏览器访问:  http://172.25.52.2/test.php ------->实现数据的同步


http://chatgpt.dhexx.cn/article/MacFwruG.shtml

相关文章

【MySQL集群+Redis配置】

Mysql集群配置 一、主从备份二、主主备份三、多主一从四、一主多从五、Mysql中间件——Amoeba&#xff08;读写分离&#xff09;1)&#xff09;先搭建一个主从关系的服务器2&#xff09; 从服务器上保存授权信息&#xff0c;并开启从服务线程3&#xff09;配置读写分离 六、安装…

Redis部署

Redis部署 Redis入门简介源码编译安装 Redis入门简介 Redis是一个开源的基于内存亦可持久化的日志型、Key-Value数据库&#xff0c;并提供多种语言的API。 Redis是一个key-value存储系统。 和Memcached缓存类似&#xff0c;Redis支持存储的value类型相对更多&#xff0c;包括…

redis数据库服务群集(四)

目录 前言 一、redis集群介绍 1、redis集群优势及实现方法 2、redis三种集群模式的作用 二、主从复制模式 1、Redis主从复制的概念 2、主从复制原理 3、Redis主从复制的作用 4、主从复制流程 5、Redis主从复制的搭建 6、验证主从效果 7、报错排查 三、Redis 哨兵模…

Windows启动redis服务

1、进入到redis的安装目录下&#xff0c;在地址栏输入cmd或者在命令行界面中进入到安装目录下 2、输入命令&#xff1a;redis-server.exe redis.windows.conf 3、出现如下界面表示启动成功

Redis数据库(常用命令及服务部署)

目录 一、关系数据库和非关系数据库 ⭐关系型数据库●一个结构化的数据库&#xff0c;创建在关系模型基础上 ●一般面向于记录 ●包括Oracle、MySQL、SQL Server、Microsoft Access、DB2等 ⭐非关系型数据库 ●除了主流的关系型数据库外的数据库&#xff0c;都认为是非关…

redis服务的部署

redis服务的部署 一. 什么是redis&#xff1f;二. redis的配置以及主从关系二. redis常用指令&#xff1a;三. redis 的高可用1. 什么是高可用&#xff1f;2.配置Sentinel3. 主观下线和客观下线 四. redis集群1.Redis集群2.搭建集群 七. 结合数据库 一. 什么是redis&#xff1f…

【服务端】linux搭建redis集群

分享一次从头到尾的搭建redis的集群过程。 3主3从 图中所有的ip地址都是你自己电脑的ip。 一、安装 1.安装依赖包 yum install gcc-c 由于我之前已经安装过了&#xff0c;所以不用再安装了&#xff0c;没安装过就等它自动完成 2.下载redis&#xff0c;需要注意的是版本需…

将redis 设置为服务

每次启动 redis 都要去到 Redis 安装目录下寻找 redis-server.exe 文件点击&#xff0c;很是麻烦&#xff0c;所以可以通过这个方法将redis设置为服务 进入redis文件夹&#xff0c;输入redis-server.exe --service-install redis.windows.conf --loglevel verbose 出现如下情况…

redis服务

redis软件下载地址&#xff1a;Redis redis支持的数据类型: • 字符串(strings) • 散列(hashes) • 列表(lists) • 集合(sets) • 有序集合(sorted sets) redis常用命令&#xff1a; config get *查看配置select 1选择数据库flushdb清空当前数据库flushall清空所有数据库…

Redis添加到系统服务

一、需求 当我们使用Redis时&#xff0c;需要启动Redis服务&#xff0c;然后才能够在客户端使用&#xff0c;在这里推荐使用一个Redis的客户端管理工具 redisdesktopmanager&#xff0c;每次在控制台打开Redis服务之后&#xff0c;都不能够将该窗口关闭&#xff0c;因为一旦关…

windows redis 后台启动 redis 服务

下载Redis 在Redis的官网下载页上有各种各样的版本&#xff0c;我这次是在windows上部署的&#xff0c;要去GitHub上下载。目前的是2.8.12版的&#xff0c;直接解压&#xff0c;在\bin\release 目录下有个压缩包&#xff0c;这就是我们需要的&#xff1a; 启动Redis 直接在上…

Redis服务部署

这里写自定义目录标题 一.关系型数据与非关系型数据1.1关系型数据库1.2非关系型数据库1.3关系型数据库和非关系型数据库区别1.4非关系型数据库产生背景 二.Redis简介2.1Redis概述2.2Redis优点 三.Redis服务部署四.Redis常用命令4.1Redis工具4.2Redis数据库常用命令4.3密码设置4…

手机短信验证码

阿里短信手机短信验证码功能 使用阿里短信服务管理 注册 登录阿里云 进入控制台 选择短信服务 开通短信服务价格大概0.04元一条 貌似有100条免费试用。 点击新手指导可查看文档 1 按照顺序进行注册登录实名认证 2 创建AccessKey 3 进入短信服务控制台 创建签名管理 签名模板…

短信验证码

写一个发送验证码的功能&#xff0c;需要实现第三方接口&#xff0c;一般采用阿里的接口 第一步:登录阿里大于官网&#xff0c;只需淘宝号即可。 第二步&#xff1a;申请验证码中的签名和短信模板&#xff0c;审核通过即可测试 第三步&#xff1a;下载阿里大于的jar包&#xff…

Win-mac版 AE 2018安装附教程

链接:https://pan.baidu.com/s/17QXFuotLoPmqDQa8DBBRrA?pwdw106 提取码:w106

AE2022最新功能简介

没有什么是您无法使用 After Effects 创建的。 创建电影电影标题、简介和转场。从剪辑中移除对象。生火或下雨。为徽标或角色设置动画。甚至在 3D 空间中导航和设计。借助行业标准的 动态图形 和 视觉效果软件After Effects&#xff0c;您可以将任何想法付诸实践。 ​下载&…

AE圣诞树(html版本),免费

最近网上很火的AE圣诞树&#xff0c;这里免费提供给大家HTML版本 源码和视频下载&#xff1a;https://download.csdn.net/download/qq_56088882/87260627

最新版Adobe2023:After Effects 2023(Ae2023) win/mac版中文特别版

Adobe After Effects 2023(AE2023)它用于视频处理后期制作、创建音乐视频、广告、动画、标题以及许多其他需要数字视频效果的元素。Adobe After Effects提供了出色的控制功能、广泛的创意工具以及与其他视频应用程序集成的能力。由于第三方开发的大量插件库&#xff0c;Adobe A…

解决PR AE 2018打不开,且桌面出现报错文件

1.win11系统安装完pr2018之后&#xff0c;出现了如下报错的文件。 2.排查 安装包是之前笔记本常用的一直没报错&#xff0c;用压缩包封装着不存在文件的缺失。 经过查阅Adobe官方文档发现这是版本未优化的BUG,大部分存在于使用独显的电脑。有相关问题的朋友可以尝试替换高版本…

水清冷冷:AE CC2018安装图文教程攻略(附工具),windows系统64位

工具分享在底部 随着短视频时代热潮到来&#xff0c;水清冷冷觉得&#xff0c;一些懂视频剪辑和特效制作的人才也越来越吃香&#xff0c;自己做自媒体或帮企业制作视频等&#xff0c;都能有好的发展前景。当然像PR剪辑软件和AE特效制作软件还是需要一定的专业水平的&#xff0c…