php redis實現簡單的訊息佇列

2022-04-08 11:53:00 字數 2225 閱讀 9399

redis

redis是乙個開源,高階的鍵值儲存和乙個適用的解決方案,用於構建高效能,可擴充套件的web應用程式。

redis有三個主要特點,使它優越於其它鍵值資料儲存系統 -

redis支援的資料型別有 stirng(字串), list(列表), hash(字典), set(集合), sorted set(有序集合);

redis 佇列

redis 提供了兩種方式來作訊息佇列。乙個是生產者消費模式,另外是發布訂閱模式。前者會讓乙個或者多個客戶端監聽訊息佇列,消費者消費;後者是乙個或者多個客戶端訂閱頻道,只要發布者發布訊息,所以訂閱者都能收到訊息,訂閱者都是平等的。

生產者消費模式

1、定時任務入列rpush

2、定時任務出列lpop

入列檔案pre.php:

<?php

$redis=new

redis();

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

$password='fenglove';

$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='fenglove';

$redis->auth($password

);//

list型別出隊操作

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

if($value

)else

開啟定時任務:

在/etc/中

shell=/bin/bash

path=/sbin:/bin:/usr/sbin:/usr/bin

mailto=root

home=/

#for details see man 4 crontabs

#example of job definition:

#.---------------- minute (0 - 59)

#| .------------- hour (0 - 23)

#| | .---------- day of month (1 - 31)

#| | | .------- month (1 - 12) or jan,feb,mar,apr ...

#| | | | .---- day of week (0 - 6) (sunday=0 or 7) or sun,mon,tue,wed,thu,fri,sat

#| | | | |

#* * * * * user-name command to be executed

1 * * * * root /bin/netstat -lntp

* * * * * root /usr/local/php/bin/php /root/test.php >> /root/test.log

* * * * * root /usr/local/php/bin/php /root/phptest/index.php

*/10 * * * * root /usr/local/php/bin/php /root/phptest/pre.php

結果:

1 127.0.0.1:6379> lrange mylist 0 -1

2 1) "h"

3 2) "e"

4 3) "l"

5 4) "l"

6 5) "o"

7 6) "w"

8 7) "o"

9 8) "r"

10 9) "l"

11 10) "d"

12 127.0.0.1:6379> lrange mylist 0 -1

13 1) "e"

14 2) "l"

15 3) "l"

16 4) "o"

17 5) "w"

18 6) "o"

19 7) "r"

20 8) "l"

21 9) "d"

PHP Redis 實現簡單訊息佇列

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

php redis實現訊息佇列

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

php redis實現訊息佇列

個人理解在專案中使用訊息佇列一般是有如下幾個原因 把瞬間伺服器的請求處理換成非同步處理,緩解伺服器的壓力 實現資料順序排列獲取 redis實現訊息佇列步驟如下 1 redis函式rpush,lpop 2 建議定時任務入佇列 3 建立定時任務出佇列 檔案 demo.php插入資料到redis佇列 re...