在1的基础上测试更新mysql数据,work端和redis并不能一同更新

在server3上面更改数据


redis上面 客户端并没有改变

为了解决这种问题,安装调度器gearmand

gearmand是一个管理调度的工具,客户请求到达gearmand,它把请求分配给合适的work进程

client --> job --> worker

1、Client 请求发起者,客户端程序可以是任何一种语言,C 、PHP 、Perl 、Python 等。
2、Job 请求调度者,负载协调把 Client 发出的请求转发给合适的 Worker。
3、Worker 请求处理者,处理 Job 分发来的请求,可以是任何一种语言

server1

刚才已经装好gearmand的包

server3

添加一个注册函数 传送数据

yum install unzip -y
unzip lib_mysqludf_json-master.zip
yum install mariadb-devel -y
yum install gcc -y

编译模块
将模块放到 mysql 插件目录

cd lib_mysqludf_json-master
gcc $(mysql_config --cflags) -shared -fPIC -o lib_mysqludf_json.so lib_mysqludf_json.c
cd
cp lib_mysqludf_json-master/lib_mysqludf_json.so /usr/lib64/mysql/plugin/

查看

mysql -uroot -pwestos
show global variables like 'plugin_dir';


注册函数

CREATE FUNCTION json_object RETURNS STRING SONAME 'lib_mysqludf_json.so';

安装插件管理 gearman 的分布式队列

tar zxf gearman-mysql-udf-0.6.tar.gz
安装插件
yum install -y libevent-devel-2.0.21-4.el7.x86_64.rpm libgearman-1.1.12-18.el7.x86_64.rpm libgearman-devel-1.1.12-18.el7.x86_64.rpm
cd gearman-mysql-udf-0.6
./configure --libdir=/usr/lib64/mysql/plugin/ --with-mysql
make && make install

在mysql 里面配置

注册 udf 函数

mysql -uroot -pwestos
CREATE FUNCTION gman_do_background RETURNS STRING SONAME 'libgearman_mysql_udf.so';
CREATE FUNCTION gman_servers_set RETURNS STRING SONAME 'libgearman_mysql_udf.so';
select * from mysql.func;
指定 gman 服务信息
SELECT gman_servers_set('172.25.254.1:4730');


编写 mysql 触发器

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 ;


导入

mysql -pwestos < test.sql

server1

cp worker.php /usr/local/
cd /usr/local/
vim worker.php
nohup php /usr/local/worker.php &> /dev/null &
后台运行 不管对错
<?php
$worker = new GearmanWorker();
$worker->addServer();
$worker->addFunction('syncToRedis', 'syncToRedis');$redis = new Redis();
$redis->connect('172.25.254.2', 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);
}
?>

测试:

在server3上面改变


linux--redis(redis在lnmp中做加速器2)相关推荐

  1. Redis集群——利用Gearman在Lnmp架构中做MySQL的缓存服务器

    一.概述 Redis的集群主要是使用切片技术来搭建的,简单来说就是把所有KEY分散存放到不同的redis节点上(不要把鸡蛋都放在一个篮子里). 1. 集群基本原理 Redis集群中内置了16384个槽 ...

  2. 人生最好的php,mysql,linux,redis,docker等相关技术经典面试题,新手收藏学习,持续更新中。。。

    php面试题 1.写出你能想到的所有HTTP返回状态值,并说明用途(比如:返回404表示找不到页面) # 200:服务器请求成功 # 301:永久重定向,旧网页已被新网页永久替代 # 302:表示临时 ...

  3. 安装Linux虚拟机并在Llinux中安装Redis、MySQL

    文章目录 1.下载VMware 2.创建虚拟机 3.安装CentOS 4.给linux虚拟机设置静态IP 4.1修改子网IP和网关IP 4.2以编辑模式打开网卡配置文件 4.3修改IP为静态IP 4. ...

  4. linux修改redis的访问ip不生效,linux系统中 redis 保存数据的5种形式 linux后端模式启动 jedis无法通过IP地址和端口号访问如何修改linux防火墙...

    vim修改redis.conf配置文件(我的已经复制到虚拟机的/usr/local/redis/bin目录下)为daemonize yes, 以后端模式启动 ./redis-server redis. ...

  5. linux 查redis状态_干货:用案例代码详解Redis中的事件驱动模型

    Redis 是一个事件驱动的内存数据库,服务器需要处理两种类型的事件. 文件事件 时间事件 下面就会介绍这两种事件的实现原理. 推荐阅读:我凭借这份pdf拿下了蚂蚁金服.字节跳动.小米等大厂的offe ...

  6. linux安装 redis,在linux中安装redis

    本文中使用的系统是Ubantu 18.04 因为我是第一次使用Linux系统,并不知道使用哪一款比较好,主要是因为Ubantu的界面很好看(笑) 在使用linux安装redis之前遇到过几个小问题.在 ...

  7. 查找linux中的redis在哪个文件夹,linux查看redis版本有哪些步骤?在Linux中基本操作redis有哪些?...

    通常我们是在windows系统下安装软件,查看版本是通过命令行的方式,今天给大家由小编介绍我们如何在Linux的操作系统下,通过哪些步骤来查看redis的版本以及有哪些基本操作呢?下面我们一起来了解下 ...

  8. docker安装redis提示没有日记写入权限_浅析Linux下Redis的攻击面(一)

    文章转自先知社区:https://xz.aliyun.com/t/7974 0x0 前言   Redis在内网渗透中常常扮演着重要的角色,其攻击方式非常多样化,在内网复杂的环境架构中容易出现各种问题, ...

  9. Linux 下 Redis 安装教程

    Linux 下 Redis 安装教程 事先准备 下载 Redis 安装 Redis 设置 Redis 开机自启动 远程访问 Redis RDM 远程访问 Redis 笔者的运行环境: CentOS S ...

最新文章

  1. 杭电ACM刷题(1):1002,A + B Problem II
  2. Oracle电子商务套件版本12.1.3自述文件 (Doc ID 1534411.1)
  3. Android 系统(115)---死机问题分析
  4. centos6.5卸载java,CentOS 5.2卸载自带Java1.4.2 安装JDK6
  5. Golang类型转换模块 - gconv
  6. css常用选择器选择器
  7. VS2017 无法使用XXX附加到应用程序
  8. C# Parse and TryParse 方法详解
  9. 魔兽世界服务器修改模型,修改模型教程!
  10. 使用canvas压缩图片
  11. 图像处理之EXIF信息
  12. 自增约束(auto_increment)
  13. 学好水彩,给自己做个手机壳吧
  14. 马尾神经损伤在中医上叫什么?
  15. OpenCV色域转换
  16. 【解决方法】浏览器网页界面显示未连接到互联网
  17. 这5个PNG免抠素材网站,可商用,赶紧马住了
  18. 英国将强制互联网公司遏制外国政府发布假信息,违法者或被罚款数十亿美元...
  19. SQL 全文检索应用
  20. module.exports 与 exports.xxx 的区别

热门文章

  1. 老毛桃制作linux u盘系统盘,使用U盘制作linux服务器启动盘,U盘制作普通系统盘的制作过程也是一样...
  2. Sap Program 自动创建供应商资料,BP
  3. 苹果痛下狠手,全面禁止App内部的广告拦截软件
  4. 视频制作软件哪个好,视频剪辑软件哪个好,电视剧怎么剪辑成短视频发布?
  5. 学生-课程数据库—初识sql语句(04)(注释版)
  6. hive 的 lateral view用法以及注意事项
  7. 俄罗斯DST收购ICQ;苹果收购芯片提供商(每日关注20100428)
  8. java系统开发注意事项
  9. Linux高级命令进阶(week1_day2)--技术流ken
  10. AMM敏捷成熟度评估框架介绍