处理流程

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秒杀架构