![](https://static1.51cto.com/edu/blog/mobile/images/share_default.jpg)
Logo
- 首页
- 文章
- 关注
- 订阅专栏
</ul> <ul class="Navigates Navigates-right fr"> <li class="more maps"> <a href="javascript:void(0);">网站导航</a> <div> <a href="https://edu.51cto.com/" target="_blank">学院</a> <a href="https://e.51cto.com/" target="_blank">微职位</a> <a href="https://blog.51cto.com/" target="_blank">博客</a> <a href="http://down.51cto.com/" target="_blank">下载</a> <a href="https://home.51cto.com/" target="_blank">家园</a> <a href="http://bbs.51cto.com/" target="_blank">论坛</a> <a href="http://x.51cto.com" target="_blank">CTO训练营</a> <!--a href=" http://club.51cto.com?blog" target="_blank">CTO俱乐部</a--> <a href="http://wot.51cto.com" target="_blank">WOT</a> <a href="http://www.51cto.com" target="_blank">51CTO</a> <i class="arrow"></i> </div> </li> <li class="more"> <a href="javascript:void(0);" id="myAllMsg">消息<i class="dot"></i></a> <div> <a href="https://home.51cto.com/msg/notify" id="myNotify" target="_blank">通知<i class="dot"></i></a> <a href="https://home.51cto.com/msg/inbox" id="myMsg" target="_blank">私信<i class=""></i></a> <a href="https://home.51cto.com/msg/recommend" id="myRecommend" target="_blank">活动<i class="dot"></i></a> <i class="arrow"></i> </div> </li> <li class="more user"> <a class="is-vip-bg-1" href="https://blog.51cto.com/11263721" target="_blank"> <img class="is-vip-img is-vip-img-5" data-uid="11253721" src="https://ucenter.51cto.com/images/noavatar_middle.gif"> </a> <div> <a href="https://blog.51cto.com/11263721">我的博客</a> <a href="https://blog.51cto.com/blogger/draft-list">我的草稿</a> <a href="/cloumn/mine">我的订阅专栏</a> <a href="/stu/history">我的学习记录</a> <a href="/coupon/list">我的优惠券</a> <a href="https://home.51cto.com/space/favorite?uid=11253721" target="_blank">我的收藏</a> <a href="/blogger/blog-manage">博客管理</a> <a href="/user/logout">退出</a> <i class="arrow"></i> </div> </li> <li class="mRead"> <a href="javascript:;">手机阅读</a> <div> <img src="https://static1.51cto.com/edu/blog/images/blog_qr.png"> <p>扫一扫体验手机阅读</p> <i class="arrow"></i> </div> </li> <li class="search"><a href="https://blog.51cto.com/search/index" target="_self">搜索</a></li> <li class="write"><a href="https://blog.51cto.com/blogger/publish">写文章</a></li> </ul> <div class="msg-follow-bg Page"> </div> <div class="msg-follow-bg Page"> </div> <div class="msg-follow-bg Page"> </div> <div class="clear"></div>
KaTeX parse error: Expected '}', got 'EOF' at end of input: …AD({ ADD:(’’),
W:500,
H:400,
cookie:‘blog_activity_blog78’,
mask:"#000",
ts:‘21600’,
noCBtn: true
})
})
客服
Redis+mysql+NGINX+PHP
一 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可以做很多内部复杂性很强的事情。同时,在磁盘格式方面他们是紧凑的以追加的方式产生的,因为他们并不需要进行随机访问。
二 实验环境:
软件下载地址:
链接:https://pan.baidu.com/s/1VJ91A6pCLqDfbzsL2OPyXA
密码:bu2x
1 软件的安装
1 安装php并修改时区
查看其是否添加了mysql模块
2 安装和配置NGINX模块
添加PHP主页:
查看:
3 PHP上加载redis相关的模块:
4 server2上安装redis
2 配置
1 server3 端配置链接redis和mysql
2 server 1 端mysql 端配置:
3 测试:
后端数据库修改数据:
前端查看:
没有变化,由于没有触发更新机制,因此没有反应:
3 配置触发更新:
gearman 架构图:
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 的数据,以守护进行的形式存在
2 gearman 安装,用于php的插件,
查看模块是否安装成功
3 配置PHP链接Redis:
通过指定redis服务器IP地址和端口的方式进行指定
打入后台
将配置文件发往mysql数据所在的server1
4 安装mysql相关配置包
1 lib_mysqludf_json UDF库函数将关系数据映射为JSON 格式。通常,数据库中的数据映
射为JSON 格式,是通过程序来转换的。
2 安装gearman-mysql-udf:
这个插件是用来管理调用Gearman 的分布式的队列。
5 修改为创建触发器模板
6 注册UDF函数:
7 创建触发器并查看其状态
8 服务端进行数据插入测试
客户端查看是否插入成功
3
收藏
-
我这边目前是没有碰到的
2019-06-11 21:15:58
回复
-
这个不同的版本可能不近相同,希望能够按照上述版本操作
2019-06-11 21:15:04
回复
ERROR 1585 (HY000): This function 'json_object' has the same name as a native function
这个有没有办法解决
-
你这是创建了两个相同的函数,要么就不管,要么就删除一个
2019-07-03 22:14:58
回复
- 第1章 一 Redis
- 1 Redis 简介
- 2 Redis 优势
- 3 Redis与其他key-value存储比较
- 第2章 二 实验环境:
- 1 软件的安装
- 1 安装php并修改时区
- 2 安装和配置NGINX模块
- 3 PHP上加载redis相关的模块:
- 4 server2上安装redis
- 2 配置
- 1 server3 端配置链接redis和mysql
- 2 server 1 端mysql 端配置:
- 3 测试:
- 3 配置触发更新:
- 1 gearmand 的安装:
- 2 gearman 安装,用于php的插件,
- 3 配置PHP链接Redis:
- 4 安装mysql相关配置包
- 5 修改为创建触发器模板
- 6 注册UDF函数:
- 7 创建触发器并查看其状态
- 8 服务端进行数据插入测试
推荐专栏更多
猜你喜欢
![](https://s1.51cto.com/images/blog/201905/05/f92360e227f9d91cdff7ea95120630ef.png)
![](https://static1.51cto.com/edu/blog/mobile/images/left-qr.jpg)
扫一扫,领取大礼包
function insertCodeElement(content, container){
container = container || document;
// 创建一个 div 来放置获取到的内容,这样就可以把 content 字符串内容转换成 dom
// 方便我们对这个 dom 进行操作(只是创建 div,并没有插入到文档,他只存在于内存中)
var parent = document.createElement(‘div’);
parent.innerHTML = content;
// 找到 parent 中的所有 pre 标签,并遍历
var $pres = $(parent).find('pre');
$pres.each(function(index, el) {
var $el = $(el),
html = $el.html(),
code = document.createElement('code'),
elClass = $el.attr('class');
if(!elClass) {return};
// 获取 pre 标签中,class 属性中包含的本段代码所有的编程语言
var language = elClass.substring(6, elClass.indexOf(';'));
code.className = 'language-' + language;
code.innerHTML = html;
$el.html(code);
});
$(container).html(parent.innerHTML);
// 最后,调用 Prism 的方法来高亮代码
Prism.highlightAll();
}
window._bd_share_config={
“common”:{
“bdText”:“Redis+mysql+NGINX+PHP”,
“bdDesc”?("#abstract_bdshare").text(),
“bdMini”:“2”,
“bdMiniList”:false,
“bdPic”:“https://s1.51cto.com/images/201710/25/bd540a4f14d822f6e69087758699358b.jpg”,
“bdStyle”:“0”,
“bdSize”:“16”
},
“share”:{}
};
with(document)0[(getElementsByTagName(‘head’)[0]||body).appendChild(createElement(‘script’)).src=’/static/api/js/share.js?v=89860593.js?cdnversion=’+~(-new Date()/36e5)];
setTimeout(function(){
$(’.bdsharebuttonbox a’).removeAttr(‘title’)
},1000);
var now_time = 1563529918; //当前时间
setInterval(function(){now_time+=0.01},10);
// 初始化页面
updatePage();
// 页面tab切换
zDate.visibilityAction(function () {
zDate.getServerTime(function (e) {
var updateResult = new Date(e).getTime();
now_time = +updateResult.toString().substr(0, 10);
updatePage();
});
})
// 定时刷新现在时间
setInterval(function () {
zDate.getServerTime(function (e) {
var updateResult = new Date(e).getTime();
now_time = +updateResult.toString().substr(0, 10);
updatePage();
});
}, 1000602);
// 页面刷新
function updatePage() {
$(’.presell’).each(function(index, item) {
var end_time = $(this).data(‘end’); // 结束时间
if (!end_time) {
return;
}
var me = $(this);
if (me.lastTime) {
clearInterval(me.lastTime);
me.lastTime = null;
} else {
me.lastTime = setInterval(function() {
zDate.setLastTimePc(me.find(’.timespan’), (end_time1000-now_time1000), me.lastTime, function() {
me.parents(’.right’).find(’.cloumn-subscribe’).removeClass(‘presell-color’);
me.remove();
$(’.pre-tips’).remove();
});
}, 10);
}
});
}
//二维码显示
$(".group_git_box").hover(function(){
$(this).parents(’.group_img_box’).find(".group_code_box").show()
},function(){
$(this).parents(’.group_img_box’).find(".group_code_box").hide()
})
<script type="text/javascript">
//百度统计代码
var _hmt = _hmt || [];
(function() {
var hm = document.createElement("script");
hm.src = "https://hm.baidu.com/hm.js?2283d46608159c3b39fc9f1178809c21";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
//自动推送链接
(function(){
var bp = document.createElement('script');
var curProtocol = window.location.protocol.split(':')[0];
if (curProtocol === 'https') {
bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
}
else {
bp.src = 'http://push.zhanzhang.baidu.com/push.js';
}
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(bp, s);
})();
</script>
<script type="text/javascript">
var _vds = _vds || [];
window._vds = _vds;
(function(){
_vds.push(['setAccountId', '8c51975c40edfb67']);
(function() {
var vds = document.createElement('script');
vds.type='text/javascript';
vds.async = true;
vds.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + 'assets.growingio.com/vds.js';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(vds, s);
})();
})();
//document.write(decodeURI("%3Cscript src='https://tongji.51cto.com/frontend/tj.gif' type='text/javascript'%3E%3C/script%3E"));
</script>
Ctrl+Enter 发布
发布
取消