php利用redis實現訊息佇列解析

2021-10-10 13:00:54 字數 1968 閱讀 3991

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 開啟守護程序執行,修改檔案之後需要從新啟...