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