php+redis訊息佇列是php+mysql效能不足時的乙個中間間處理方案。通過這個中間的處理,保證的資料的可用性和準確性。用於伺服器瞬間請求大,資料庫壓力大的情況。如併發量大導致的超賣、併發量大導致的資料重複情況。
流程:php接受請求和資料 -> php把資料寫入redis佇列中(入隊) -> shell定時呼叫php讀取佇列資料寫入mysql(出隊)
實現**:
入隊:inqueue.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)
出隊:outqueue.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指令碼
#進行每分鐘呼叫一次
* * * * * /usr/local/nginx/html/process.sh
#!/bin/bash
#file_name : process.sh
#author : zuoping
php /usr/local/nginx/html/outqueue.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
$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 為了模擬多個使用者的請求,使用乙個for迴圈替代 redis資料入隊操作 redis new redis redis connect 127.0.0.1 6379 for i 0 i 50 i catch exception e 在後台進行資料處理 守護程序 redis資料出隊...
基於PHP使用rabbitmq實現訊息佇列
1.從github上面獲取amqp基於php的實現擴充套件 2.建立生產者 send.php 1 require dir protected vendor autoload.php 23 usephpamqplib connection amqpstreamconnection 4use phpam...
php基於Redis訊息佇列實現的訊息推送的方法
基本知識點 重點用到了以下命令實現我們的訊息推送 邏輯分析 實現 普通任務指令碼 phpforeach user list as item redispushqueue 守護程序執行 nohup php yourpath redispushqueue.php 開啟守護程序執行,修改檔案之後需要從新啟...