php和redis实现消息队列
php+redis消息队列是php+mysql性能不足时的一个中间间处理方案。通过这个中间的处理,保证的数据的可用性和准确性。用于服务器瞬间请求大,数据库压力大的情况。如并发量大导致的超卖、并发量大导致的数据重复情况。
流程:php接受请求和数据 -> php把数据写入redis队列中(入队) -> shell定时调用php读取队列数据写入mysql(出队)
实现代码:
入队:inqueue.php
php
- <?php
- $redis = new redis();
- $redis->connect('127.0.0.1',6379);
- $redis -> select('1');
- $redis->auth('');
- $data = [a,b,c,d,e,f,g,h]; //这里可以是get或post请求过来的数据
- $data = json_encode($data);
- $in = $redis->rpush('queue',$data);
- if($in){
- echo "入队成功";
- }
出队:outqueue.php
php
- #!/usr/bin/php
- <?php
- $redis = new redis();
- $redis->connect('127.0.0.1',6379);
- $redis -> select('1');
- $redis->auth('');
- $value = $redis->lpop('queue');
- $value = json_decode($value,true);
shell process.sh:定时调用outqueue.php脚本
php
- #进行每分钟调用一次
- * * * * * /usr/local/nginx/html/process.sh
php
- #!/bin/bash
- #file_name : process.sh
- #author : zuoping
- php /usr/local/nginx/html/outqueue.php
*如果每分钟调用一次频率不够,可以执行多次调用脚本,如:
php
- #!/bin/bash
- #file_name : process.sh
- #author : zuoping
- php /usr/local/nginx/html/outqueue.php
- php /usr/local/nginx/html/outqueue.php
- php /usr/local/nginx/html/outqueue.php
- php /usr/local/nginx/html/outqueue.php
- php /usr/local/nginx/html/outqueue.php
- php /usr/local/nginx/html/outqueue.php
- php /usr/local/nginx/html/outqueue.php
- php /usr/local/nginx/html/outqueue.php
- php /usr/local/nginx/html/outqueue.php
- php /usr/local/nginx/html/outqueue.php
- php /usr/local/nginx/html/outqueue.php
- #这样就一分钟调用了多次了。
查看队列中的当前数据:
php
- <?php
- $redis = new redis();
- $redis->connect('127.0.0.1',6379);
- $redis -> select('1');
- $redis->auth('');
- $list = $redis->lrange('queue',0,-1);
- var_dump($list);
php和redis实现消息队列的更多相关文章
- Redis 做消息队列
一般来说,消息队列有两种场景,一种是发布者订阅者模式,一种是生产者消费者模式.利用redis这两种场景的消息队列都能够实现.定义: 生产者消费者模式:生产者生产消息放到队列里,多个消费者同时监听队列, ...
- Redis作为消息队列服务场景应用案例
NoSQL初探之人人都爱Redis:(3)使用Redis作为消息队列服务场景应用案例 一.消息队列场景简介 “消息”是在两台计算机间传送的数据单位.消息可以非常简单,例如只包含文本字符串:也可以更 ...
- redis resque消息队列
Resque 目前正在学习使用resque .resque-scheduler来发布异步任务和定时任务,为了方便以后查阅,所以记录一下. resque和resque-scheduler其优点在于功能比 ...
- 【springboot】【redis】springboot+redis实现发布订阅功能,实现redis的消息队列的功能
springboot+redis实现发布订阅功能,实现redis的消息队列的功能 参考:https://www.cnblogs.com/cx987514451/p/9529611.html 思考一个问 ...
- 【Redis】php+redis实现消息队列
在项目中使用消息队列一般是有如下几个原因: 把瞬间服务器的请求处理换成异步处理,缓解服务器的压力 实现数据顺序排列获取 redis实现消息队列步骤如下: 1).redis函数rpush,lpop 2) ...
- Lumen开发:结合Redis实现消息队列(1)
1.简介 Lumen队列服务为各种不同的后台队列提供了统一的API.队列允许你推迟耗时任务(例如发送邮件)的执行,从而大幅提高web请求速度. 1.1 配置 .env文件的QUEUE_DRIVER选项 ...
- Redis除了做缓存--Redis做消息队列/Redis做分布式锁/Redis做接口限流
1.用Redis实现消息队列 用命令lpush入队,rpop出队 Long size = jedis.lpush("QueueName", message);//返回存放的数据条数 ...
- sping+redis实现消息队列的乱码问题
使用spring支持redis实现消息队列,参考官方样例:https://spring.io/guides/gs/messaging-redis/ 实现后在运行过程中发现消费者在接收消息时会出现乱码的 ...
- 程序员过关斩将--redis做消息队列,香吗?
Redis消息队列 在程序员这个圈子打拼了太多年,见过太多的程序员使用redis,其中一部分喜欢把redis做缓存(cache)使用,其中最典型的当属存储用户session,除此之外,把redis作为 ...
- NoSQL初探之人人都爱Redis:(3)使用Redis作为消息队列服务场景应用案例
一.消息队列场景简介 “消息”是在两台计算机间传送的数据单位.消息可以非常简单,例如只包含文本字符串:也可以更复杂,可能包含嵌入对象.消息被发送到队列中,“消息队列”是在消息的传输过程中保存消息的容器 ...
随机推荐
- C# Await
每次提到异步我都选择绕开,感觉深不可测,最近打算看看异步,但又不愿意看书,网上找了几个视频看,发现传智播客的老师讲异步都不是很深入,关键的问题一笔带过,倒是把我弄糊涂了,印象最深刻的是那个老师说的一句 ...
- nhibernate Stuty
https://blog.csdn.net/u010371458/article/details/8995166 翻译版 https://wenku.baidu.com/view/46fa56cea1 ...
- JavaScript高程第三版笔记(1-5章)
第2章:在html中使用javascript ①script标签的defer属性 <script type="text/javascript" defer="def ...
- 基于.net 4.0框架的Cipher演示程序
using System.Text; namespace Cipher.Algorithm { static class Caesar { static public string Encrypt(s ...
- Bat:Basic knowledge(同时运行多条命令,连接SqlServer执行sql,单个bat打开多个tomcat,cmd切换命令行编码,根据PID结束端口号)
1.Windows7环境下命令行一次运行多条命令 Windows7命令行(cmd)下,如果想一次运行多条命令可能用到的连接符个人了解到的有三个:&&,||和&. aa & ...
- PJzhang:shell基础入门的2个疗程-one
猫宁!!! 在centos7上操作这一切 第1节:什么是shell centos7默认使用shell的bash cat /etc/shells 第2节:linux的启动过程 BIOS(主板,引导介质) ...
- DQN算法原理详解
一. 概述 强化学习算法可以分为三大类:value based, policy based 和 actor critic. 常见的是以DQN为代表的value based算法,这种算法中只有一个值函数 ...
- VBNET 文件信息和目录管理(判断,创建,删除,移动,复制)
1.判断文件/目录是否存在 Try ' 先判断文件是否存在. If Not File.Exists(TextBox4.Text) Then File.CreateText(TextBox4.Text) ...
- Hanlp配置自定义词典遇到的问题与解决方法
本文是整理了部分网友在配置hanlp自定义词典时遇到的一小部分问题,同时针对这些问题,也提供另一些解决的方案以及思路.这里分享给大家学习参考. 要使用hanlp加载自定义词典可以通过修改配置文件han ...
- Python学习【day05】- Python文件处理
一.打开文件 对文件的操作主要为三步:1.打开文件,得到文件句柄.2.通过句柄对文件进行操作.3.关闭文件 # 默认打开模式为r,encoding默认为系统文件编码 f=open('F:/Go.txt ...