redis 消息队列的相关知识

1.消息队列相关信息介绍:
队列介质有:
mysql:可靠性高 易实现 速度慢
redis:速度快,单条大消息包时效率低
消息系统:专业性强,可靠,学习成本高
消息处理触发机制:
死循环方式读取:易实现,故障时无法及时恢复
定时任务:压力均分,有处理上限
守护进程:类似于PHP-FPM和PHP-CGI,需要shell基础

订单系统(接受用户订单) 订单队列表(mysql) 配送系统及配送结果(crontab)

接受用户订单 订单系统 队列表 定时脚本(goods.sh) 配送处理系统 配送系统
(order.php) (order_id status) 每分钟启动 (Goods.php)
mobile address
created_at updated_at

3.订单队列表
order_queue
id order_id mobile address
created_at updated_at
status(0未处理 1已处理 2处理中)

4.linux部署 crontab命令

分 时 日 月 周 命令

/1 * * * * /home/www/queue/goods.sh >> /home/www/queue/queue.log 2>&1

touch /home/www/queue/queue.log

tail -f queue.log

5.秒杀业务程序
redis 入库程序
数据库

设计思路:
秒杀程序把请求写入Redis(uid ,time_stamp)
检查Redis已存放数据的长度,超出上限直接丢弃
死循环处理存入Redis的数据并入数据库

6.redis_queue 表 从redis入数据库的表
id uid time_stamp

7.真实的场景如果另外一个程序一直在循环取redis队列中的数据,在高并发的情况下肯定会出现超卖情况,那么可以在redis队列中数据达到秒杀指定人数后,关闭前台页面中的秒杀按钮,点击购买提示秒杀结束不再插入redis中,然后再通过程序从redis列中取数据->插入mysql->下订单等等逻辑操作。

你可能感兴趣的:(redis 消息队列的相关知识)