php+redis消息队列是php+mysql性能不足时的中间处理方案。通过这种中间处理,保证了数据的可用性和准确性。当服务器瞬间请求量大,数据库压力大时使用。比如大并发导致的超卖,大并发导致的数据重复。流程:php接受请求和数据->php将数据写入redis队列(enqueue)->shell定时调用php读取队列数据写入mysql(退出)实现代码:enqueue:inqueue.phpconnect('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#!/usr/bin/phpconnect('127.0.0.1',6379);$redis->select('1');$redis->auth('');$value=$redis->lpop('queue');$value=json_decode($value,true);shellprocess.sh:定期调用outqueue.php脚本#calleveryminute*****/usr/local/nginx/html/process.sh#!/bin/bash#file_name:process.sh#author:zuopingphp/usr/local/nginx/html/outqueue.php*如果每分钟调用一次不够,可以多次调用脚本,如:#!/bin/bash#file_name:process.sh#author:zuopingphp/usr/local/nginx/html/outqueue.phpphp/usr/local/nginx/html/outqueue.phpphp/usr/local/nginx/html/outqueue.phpphp/usr/local/nginx/html/outqueue.phpphp/usr/local/nginx/html/outqueue.phpphp/usr/local/nginx/html/outqueue.phpphp/usr/local/nginx/html/outqueue.phpphp/usr/local/nginx/html/outqueue.phpphp/usr/local/nginx/html/outqueue.phpphp/usr/local/nginx/html/outqueue.phpphp/usr/local/nginx/html/outqueue.php#这样一分钟内调用了很多次查看队列当前数据:connect('127.0.0.1',6379);$redis->select('1');$redis->auth('');$list=$redis->lrange('queue',0,-1);var_dump($list);
