php redis實現訊息佇列

2022-03-12 03:09:25 字數 1538 閱讀 7669

個人理解在專案中使用訊息佇列一般是有如下幾個原因:

把瞬間伺服器的請求處理換成非同步處理,緩解伺服器的壓力

實現資料順序排列獲取

​redis實現訊息佇列步驟如下:

1).redis函式rpush,lpop

2).建議定時任務入佇列

3)建立定時任務出佇列

檔案:demo.php插入資料到redis佇列

<?php

$redis = new redis();

$redis->connect('127.0.0.1',6379);

$password = '123456';

$redis->auth($password);

$arr = array('h','e','l','l','o','w','o','r','l','d');

foreach($arr as $k=>$v)

執行後結果如下

檔案:index.php定時掃瞄出佇列

<?php

$redis = new redis();

$redis->connect('127.0.0.1',6379);

$password = '123456';

$redis->auth($password);

//list型別出隊操作

$value = $redis->lpop('mylist');

if($value)else

?>

建立定時任務

*/1 * * * * root php /wwwroot/workplace/redis/index.php

*/3 * * * * root php /wwwroot/workplace/redis/demo.php

tail -f /var/log/cron  檢視定時任務執**況

nov  7 00:30:01 dongzi crond[6888]: (root) cmd (php /wwwroot/workplace/redis/demo.php)

nov  7 00:30:01 dongzi crond[6890]: (root) cmd (php /wwwroot/workplace/redis/index.php )

定時任務執行佇列寫入結果如下

127.0.0.1:6379> lrange mylist 0 -1

1) "h"

2) "e"

3) "l"

4) "l"

5) "o"

6) "w"

7) "o"

8) "r"

9) "l"

10) "d"

定時任務執行出佇列後:

127.0.0.1:6379> lrange mylist 0 -1

1) "e"

2) "l"

3) "l"

4) "o"

5) "w"

6) "o"

7) "r"

8) "l"

9) "

d"

php redis實現訊息佇列

參考 參考 訊息佇列 是在訊息的傳輸過程中儲存訊息的容器。訊息佇列管理器在將訊息從它的源中繼到它的目標時充當中間人。佇列的主要目的是提供路由並保證訊息的傳遞 如果傳送訊息時接收者不可用,訊息佇列會保留訊息,直到可以成功地傳遞它 應用場景 非同步處理,應用解耦,流量削鋒和訊息通訊四個場景 1 非同步處...

PHP REDIS 實現訊息佇列服務

redis new redis redis connect 127.0.0.1 6379 生成任務 tasks for i 0 i 3 i 投遞任務給消費者 res redis lpush tasks tasks redis new redis redis connect 127.0.0.1 637...

PHP Redis 實現簡單訊息佇列

redis做訊息佇列的好處在於它的輕量級,高併發,延遲敏感,應用場景有 即時資料分析 秒殺計數器 快取等 redis做訊息佇列待解決的問題 1 訊息的可靠性 沒有相應的機制保證訊息的消費,當消費者消費失敗的時候,訊息體丟失,需要手動處理。生產者只管向佇列中插入資料,不管消費者是否成功消費。2 消費者...