处理流程
Redis数据类型中的list类型
RabbitMQ的官网:
www.rabbitmq.com
RabbitMQ的架构和原理:
RabbitMQ使用:
php-amqplib是一个插件
Work Queues(工作队列):
在RabbitMQ的官网查下官方的demo(需要使用那个官方插件):
Ubantu 安装RabbitMQ:
查看是否正常运行:
安装必要插件(bcmatch和mbstring):
下载官方的插件包:
数据库设计:
需要两个程序:
1个是处理用户请求,并存入到redis中的程序;另一个,从redis取出并存入到数据库中的程序.
首先加载redis组件:
然后操作:
第二个程序:
首先启用redis和mysql:
死循环:从队列最左侧取出一个值来,然后判断这个值是否存在,切割出时间和UID,保存到数据库中,数据库插入失败的时候回滚释放redis
Redis的List数据类型:
架构设计:
代码级设计:
goods.sh:
crontab:
crontab -e中写定时任务; 2>&1 把错误输出转化成标准输出
shell脚本的目录和输出日志的目录:
解耦案例:队列处理订单系统和配送系统
架构设计:
程序流程:
对列表设计:
1.消息队列概念:
队列结构的中间件
消息放入后,不需要立即处理
由订阅者/消费者按顺序处理
2.核心结构:
3.应用场景:
4.队列介质:
MySQL:可靠性高、易实现;速度慢
Redis:速度快;单挑大消息包时效率低
消息系统:专业性强、可靠;学习成本高
5.消息处理触发机制:
死循环方式读取:易实现,故障时无法及时恢复
定时任务:压力均分,有处理量上限
守护进程:类似于PHP-FPM和PHP-CG,需要shell基础
消息队列总结
安装rabbitmq后要添加这几个扩展
工作队列
rabbitmq使用
rabbitmq的架构和原理
代码级设计
架构设计
redis的list类型2
redis的list类型
订单表结构
订单表结构
2.2 程序流程
架构设计
消息处理触发机制
队列介质
应用场景截图
Redis数据类型 中的list类型
1、lpush/lpushx:将值插入到(是否存在)列表头部
2、rpush/rpushx:从尾部插入
3、lpop:移除第一个元素并获取值
4、rpop:移除最后一个元素并获取值
5、ltrim:保留指定区间内元素
6、llen:获取元素长度
7、lset:通过索引设置元素的值
解耦案例:队列处理订单系统和配送系统
消息队列的概念:
1、队列结构的中间件
2、消息放入后,不需要立即处理
3、按照顺序进行逐步处理
消息队列应用场景
1、冗余
2、解耦
3、流量削峰(秒杀系统)
4、异步通信
5、扩展性
6、排序保证
消息队列有点和缺点
队列介质:Mysql、Redis、消息系统
消息处理触发机制
1、死循环方式读取:易实现,故障时无法及时恢复
2、定时任务:压力均分,有处理量上限
3、守护进程:类似php-fpm和php-cg,需要shell基础
Redis秒杀代码级设计
Redis秒杀架构