1. 程式人生 > >PHP中Redis管道

PHP中Redis管道

Redis是一個TCP伺服器,支援請求/響應協議。 在Redis中,請求通過以下步驟完成:

客戶端向伺服器傳送查詢,並從套接字讀取,通常以阻塞的方式,用於伺服器響應。
伺服器處理命令並將響應傳送回客戶端。
如果需要一次執行多個redis命令,以往的方式需要傳送多次命令請求,有redis伺服器依次執行,並返回結果,

為了解決此類問題,設計者設計出了redis管道命令:

客戶端可以向伺服器傳送多個請求,而不必等待回覆,並最終在一個步驟中讀取回復,從而大大增加了協議效能
程式碼示例:

redis版本是

<?php
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$pipe = $redis->multi(Redis::PIPELINE);
for ($i = 0; $i < 3; $i++) {
    $key = "key::{$i}";
    print_r($pipe->set($key, str_pad($i, 2, '0', 0)));
    echo PHP_EOL;
    print_r($pipe->get($key));
    echo PHP_EOL;
}
$result = $pipe->exec();
print_r($result);
引數說明:
Redis::MULTI或Redis::PIPELINE. 預設是 Redis::MULTI
Redis::MULTI:將多個操作當成一個事務執行
Redis::PIPELINE:讓(多條)執行命令簡單的,更加快速的傳送給伺服器,但是沒有任何原子性的保證

結果如下圖,可以看出每次執行set/get命令,並沒有被redis伺服器立即執行,執行結果被放在了最後的result中


--------------------- 
作者:陌上青苔 
來源:CSDN 
原文:https://blog.csdn.net/weijianfengyu/article/details/62891813?utm_source=copy 
版權宣告:本文為博主原創文章,轉載請附上博文連結!

來源:https://blog.csdn.net/weijianfengyu/article/details/62891813