欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用PHP和Redis實(shí)現(xiàn)消息隊(duì)列功能

 更新時(shí)間:2024年03月27日 09:48:32   作者:ayzen1988  
這篇文章主要介紹了如何使用PHP和Redis實(shí)現(xiàn)消息隊(duì)列功能,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用PHP具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧<BR>

前言

今天,我們繼續(xù)講消息隊(duì)列,如何使用Redis實(shí)現(xiàn)消息隊(duì)列的功能。

前期準(zhǔn)備,需要安裝好docker、docker-compose的運(yùn)行環(huán)境。

PHP的項(xiàng)目運(yùn)行環(huán)境可以參考下面的文章內(nèi)容。

如何使用docker部署php服務(wù)

前面我們也講了PHP和RabbitMQ實(shí)現(xiàn)消息隊(duì)列的功能,感興趣的可以查看下面的文章。

如何使用PHP和RabbitMQ實(shí)現(xiàn)消息隊(duì)列?

一、安裝Redis

1、安裝Redis的步驟可以參考下面的文章內(nèi)容。

Redis不同的持久化方式有什么差異?我們來(lái)做個(gè)小試驗(yàn)。

二、安裝PHP的Redis擴(kuò)展

1、打開(kāi)瀏覽器,找到擴(kuò)展下載地址,PECL :: Package :: redis。

2、進(jìn)入test1項(xiàng)目容器,執(zhí)行如下命令。

docker exec -ti test1 sh

3、下載擴(kuò)展,編譯安裝,執(zhí)行如下命令。

wget https://pecl.php.net/get/redis-6.0.2.tgz
tar -xzvf redis-6.0.2.tgz
cd redis-6.0.2/
phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install

4、增加redis擴(kuò)展修改php.ini配置,增加如下內(nèi)容。

extension=redis.so

5、檢查擴(kuò)展是否配置成功,執(zhí)行如下命令。

php -m|grep redis

返回如下內(nèi)容,說(shuō)明已安裝完成。

6、至此,PHP的Redis擴(kuò)展已安裝完成。

三、測(cè)試驗(yàn)證

1、編寫生產(chǎn)者,代碼內(nèi)容如下。

vim producer.php
<?php
// 創(chuàng)建Redis實(shí)例
$redis = new Redis();
 
try {
    // 連接到Redis服務(wù)器
    $redis->connect('redis', 6379);
    echo "成功連接到Redis服務(wù)器!\r\n";
 
    // 將消息入隊(duì)(添加到列表的尾部)
    $datetime = date('Y/m/d H:i:s');
    $message = 'Hello Max!';
    $redis->rPush('message_queue', $message);
    echo "消息已入隊(duì),datetime={$datetime},message={$message}\r\n";
} catch (RedisException $e) {
    // 處理連接錯(cuò)誤
    echo "無(wú)法連接到Redis服務(wù)器: " . $e->getMessage();
}
 
// 關(guān)閉Redis連接
$redis->close();

2、編寫消費(fèi)者,代碼內(nèi)容如下。

vim consumer.php
<?php
// 創(chuàng)建Redis實(shí)例
$redis = new Redis();
 
try {
    // 連接到Redis服務(wù)器
    $redis->connect('redis', 6379);
    echo "成功連接到Redis服務(wù)器!\r\n";
 
    while (true) {
        // 可以使用BLPOP命令來(lái)阻塞等待消息
        $message = $redis->blPop('message_queue', 0); // 0表示無(wú)限等待
        if ($message !== null) {
            $datetime = date('Y/m/d H:i:s');
            list($queue, $msg) = $message;
            echo "消息出列,datetime={$datetime},queue=${queue},message=${msg}\r\n";
        }
        usleep(100);
    }
} catch (RedisException $e) {
    // 處理連接錯(cuò)誤
    echo "無(wú)法連接到Redis服務(wù)器: " . $e->getMessage();
}
 
// 關(guān)閉Redis連接
$redis->close();

3、啟動(dòng)消費(fèi)端,執(zhí)行如下命令。

php consumer.php

正常情況會(huì)返回如下內(nèi)容,開(kāi)始監(jiān)聽(tīng)消息。

4、運(yùn)行生產(chǎn)端,執(zhí)行如下命令。

php producer.php

正常情況會(huì)返回如下內(nèi)容。

5、再看消費(fèi)端接收到的消息,正常返回如下內(nèi)容。

上面的截圖是執(zhí)行了三次生產(chǎn)端,生成了三條消息。

6、至此,PHP和Redis實(shí)現(xiàn)消息隊(duì)列的功能已驗(yàn)證完成。

總結(jié)

其實(shí)PHP和Redis實(shí)現(xiàn)消息隊(duì)列的功能,使用的是Redis的List這種數(shù)據(jù)結(jié)構(gòu)。

使用rPush入列、blPop出列,實(shí)現(xiàn)隊(duì)列的先進(jìn)先出(FIFO)。

也可以使用lPush入列、blPop出列,來(lái)實(shí)現(xiàn)隊(duì)列的先進(jìn)后出(FILO)。

實(shí)現(xiàn)PHP和Redis消息隊(duì)列的功能,其實(shí)就以下三個(gè)步驟。

1、安裝Redis。

2、安裝PHP的Redis擴(kuò)展。

3、編寫生產(chǎn)者、消費(fèi)者代碼進(jìn)行測(cè)試驗(yàn)證。

上面的代碼只是做個(gè)簡(jiǎn)單的示例,如果運(yùn)用到實(shí)際的項(xiàng)目當(dāng)中需要做進(jìn)一步的優(yōu)化。

到此這篇關(guān)于使用PHP和Redis實(shí)現(xiàn)消息隊(duì)列功能的文章就介紹到這了,更多相關(guān)PHP Redis消息隊(duì)列內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 一個(gè)PHP驗(yàn)證碼類代碼分享(已封裝成類)

    一個(gè)PHP驗(yàn)證碼類代碼分享(已封裝成類)

    驗(yàn)證碼的用途就不用多說(shuō)了,之前也寫了一篇關(guān)于PHP驗(yàn)證碼的文章,PHP 驗(yàn)證碼的實(shí)現(xiàn)。但是沒(méi)有封裝成類。下面就介紹一個(gè)PHP的一個(gè)驗(yàn)證碼類。
    2011-07-07
  • PHP數(shù)組操作簡(jiǎn)單案例分析

    PHP數(shù)組操作簡(jiǎn)單案例分析

    這篇文章主要介紹了PHP數(shù)組操作,結(jié)合簡(jiǎn)單實(shí)例形式分析了php數(shù)組轉(zhuǎn)換、排序、移除等相關(guān)操作技巧,需要的朋友可以參考下
    2016-10-10
  • WordPress中限制非管理員用戶在文章后只能評(píng)論一次

    WordPress中限制非管理員用戶在文章后只能評(píng)論一次

    這篇文章主要介紹了WordPress中限制非管理員用戶在文章后只能評(píng)論一次的方法,同時(shí)介紹了判斷用戶是否為管理員的方法,需要的朋友可以參考下
    2015-12-12
  • html靜態(tài)頁(yè)面調(diào)用php文件的方法

    html靜態(tài)頁(yè)面調(diào)用php文件的方法

    這篇文章主要介紹了html靜態(tài)頁(yè)面調(diào)用php文件的方法,在進(jìn)行應(yīng)用程序開(kāi)發(fā)過(guò)程中非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2014-11-11
  • PHP折半(二分)查找算法實(shí)例分析

    PHP折半(二分)查找算法實(shí)例分析

    這篇文章主要介紹了PHP折半(二分)查找算法,結(jié)合實(shí)例形式較為詳細(xì)的分析了php折半(二分)查找算法的概念、原理、實(shí)現(xiàn)與使用方法,并附帶了一個(gè)php折半(二分)查找算法類供大家參考,需要的朋友可以參考下
    2018-05-05
  • php 更新數(shù)據(jù)庫(kù)中斷的解決方法

    php 更新數(shù)據(jù)庫(kù)中斷的解決方法

    使用PHP程序更新數(shù)據(jù)庫(kù),總是到160000條時(shí)中斷, 查看LOG,顯示超過(guò)PHP最大執(zhí)行時(shí)間的錯(cuò)誤, 只需要在PHP腳本中加入如下語(yǔ)句
    2009-06-06
  • 淺談PHP無(wú)限極分類原理

    淺談PHP無(wú)限極分類原理

    這篇文章主要介紹了PHP無(wú)限極分類原理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • php驗(yàn)證手機(jī)號(hào)碼

    php驗(yàn)證手機(jī)號(hào)碼

    這篇文章主要介紹了php驗(yàn)證手機(jī)號(hào)碼的方法,驗(yàn)證手機(jī)號(hào)碼通常利用php正則表達(dá)試驗(yàn)證了,手機(jī)號(hào)的規(guī)則是長(zhǎng)度11位然后是13,15,18等等開(kāi)頭,這個(gè)我們只要加以分類規(guī)劃并可實(shí)現(xiàn)完美手機(jī)號(hào)碼驗(yàn)證正則了,需要的朋友可以參考下
    2015-11-11
  • PHP新手NOTICE錯(cuò)誤常見(jiàn)解決方法

    PHP新手NOTICE錯(cuò)誤常見(jiàn)解決方法

    PHP新手NOTICE錯(cuò)誤,特此寫給那些遇到和我一樣錯(cuò)誤的朋友。
    2011-12-12
  • PHP7中新添特性整理

    PHP7中新添特性整理

    在本篇文章里小編給大家整理的是一篇關(guān)于PHP7中新添特性的相關(guān)內(nèi)容,對(duì)此有興趣的朋友們可以學(xué)習(xí)參考下。
    2021-02-02

最新評(píng)論