我在做 timeline 的demo 例項 的訊息推送的時候發現推送的速度怎麼如此之慢大概每秒只處理4千條佇列**如下
<?php
/* * 後端推送timeline 的demo 例項
* */
include_once 'redisdb.class.php';
$rdb = new redisdb('192.168.1.252', '6379');
while (1)else
}}?>
那麼隊**分析下,因為主要慢是慢在
$rdb->mqpush('user:'.$val.':timeline', $timelinedataarray[1]);
為什麼呢? 因為每一次提交資訊都是需要對redis 進行一次tcp 連線 在這個過程裡面,非常慢,那麼我們要進行對**的改良,使用管道技術,把多個
佇列提交組合成一次提交,從而較少tcp 連線的數量,**如下
<?php
/* * 後端推送timeline 的demo 例項
* */
include_once 'redisdb.class.php';
$rdb = new redisdb('192.168.1.252', '6379');
while (1)else
$rdb->exec();// 多次組合一次性提交
}}
這樣的做法,還不至於提高執行的速度,並且在高複雜的環境下,可以較少網路的延遲,在使用了管道技術後,速度明顯提公升了3倍以上...
redis管道例子
管道好處 假 設不會因為tcp 報文過長而被拆分。可能兩個tcp報文就能完成四條命令,client可以將四個incr命令放到乙個tcp報文一起傳送,server則可以將四條命令 的處理結果放到乙個tcp報文返回。通過pipeline方式當有大批量的操作時候。我們可以節省很多原來浪費在網路延遲的時間。...
Redis管道傳輸
redis是乙個tcp 伺服器,並支援請求 響應協議。redis的乙個請求完成需要下面的步驟 管道的基本含義是,客戶端可以傳送多個請求給伺服器,而無需等待答覆所有,並最後讀取在單個步驟中的答應。要檢查redis的管道,只要開始redis的例項,然後在終端鍵入以下命令。echo en ping r n...
Redis管道機制(pipeline)
redis管道機制 pipeline redis的管道機制,其實是為了批量讀寫而設計的,如果進行多次的讀和寫資料到redis,每次都建立乙個鏈結,這樣是比較消耗資源的,而且也比較忙,於是想到了管道機制 pipeline 只建立乙個連線,然後批量執行讀或寫。插入資料效果 非管道 資料量 2w,執行時間...