Redis實現簡單的消息隊列


1、問:什么是消息隊列?

   答:是一個消息的鏈表,是一個異步處理的數據處理引擎。

2、問:有什么好處?

     答:不僅能夠提高系統的負荷,還能夠改善因網絡阻塞導致的數據缺失。

3、問:用途有哪些?

     答:郵件發送、手機短信發送,數據表單提交、圖片生成、視頻轉換、日志儲存等。

4、問:有哪些軟件?

     答:ZeroMQ、Posix、SquirrelMQ、Redis、QDBM、Tokyo Tyrant、HTTPSQS等(linux平台下)。

5、問:怎么實現?

     答:顧名思義,先入隊,后出隊;先把數據丟到消息隊列(入隊),后根據相應的key來獲取數據(出隊)。

6、問:Redis可以做消息隊列?

     答:首先,redis設計用來做緩存的,但是由於它自身的某種特性使得它可以用來做消息隊列,它有幾個阻塞式的API可以使用,正是這些阻塞式的API讓其有能力做消息隊列;另外,做消息隊列的其他特性例如FIFO(先入先出)也很容易實現,只需要一個list對象從頭取數據,從尾部塞數據即可;redis能做消息隊列還得益於其list對象blpop brpop接口以及Pub/Sub(發布/訂閱)的某些接口,它們都是阻塞版的,所以可以用來做消息隊列。

7、問:怎么做(基於ThinkPHP)?

     答:7.1 安裝redis,過程(略);

       7.2 安裝php-redis擴展,過程(略);

          7.3 貼代碼

                          圖1 入隊

          

                                             圖2 入隊結果

          

                                              圖3 出隊

          

                                              圖4 出隊結果

          

                                               圖5 完整代碼

           

8、小結:redis的lPush命令將一個或多個值插入到列表頭部與rPush與rPush相反;rPop命令用於溢出並返回列表的最后一個元素與lPop相反。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM