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
长跑者1号 关注
人评论
3621人阅读 2018-05-02 17:21:20
一 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 服务端进行数据插入测试
客户端查看是否插入成功
©著作权归作者所有:来自51CTO博客作者长跑者1号的原创作品,如需转载,请注明出处,否则将追究法律责任
Redis简介 PHP mysql
Linux架构
上一篇:mysql主从同步,半同步,组复... 下一篇:nginx+php+memcac...
长跑者1号
82篇文章,37W+人气,34粉丝
十年磨一剑,岁月铸精华
关注
- 第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 服务端进行数据插入测试
推荐专栏更多
基于Python的DevOps实战
自动化运维开发新概念
共20章 | 抚琴煮酒
¥51.00 445人订阅
订 阅
网工2.0晋级攻略 ——零基础入门Python/Ansible
网络工程师2.0进阶指南
共30章 | 姜汁啤酒
¥51.00 1634人订阅
订 阅
全局视角看大型园区网
路由交换+安全+无线+优化+运维
共40章 | 51CTOsummer
¥51.00 1852人订阅
订 阅
负载均衡高手炼成记
高并发架构之路
共15章 | sery
¥51.00 518人订阅
订 阅
带你玩转高可用
前百度高级工程师的架构高可用实战
共15章 | 曹林华
¥51.00 471人订阅
订 阅
猜你喜欢
python 序列化和反序列化 树,树的遍历和堆排序 Mysql启报错报The server quit without updating PID file mysql主从复制(超简单) Mysql支持的数据类型(总结) 实战Nginx与PHP(FastCGI)的安装、配置与优化 PHP中foreach循环详解 mysql启动报错:Starting MySQL... ERROR! The server quit without updating PID file mysql起动报错The server quit without updating PID file (/usr/local/mysql/data/ PHP 蚂蚁芝麻信用分接口 解决mysql的1045错误,修改root密码 linux,apache,php,mysql常用的查看版本信息的方法 NFS部署实战及原理介绍 k8s实践(三):pod常用操作 搭建zabbix监控系统详解 CentOS 7 利用Apache搭建Web网站服务 Docker UI可视化管理以及监控体系 Docker 入门 Centos7.6下部署PowerDNS python如何将字符串转换成json的几种办法
扫一扫,领取大礼包
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()
})
咨询在线客服
Ctrl+Enter 发布
发布
取消