PHP中Redis管道
Redis是一個(gè)TCP服務(wù)器,支持請(qǐng)求/響應(yīng)協(xié)議。 在Redis中,請(qǐng)求通過(guò)以下步驟完成:
客戶端向服務(wù)器發(fā)送查詢,并從套接字讀取,通常以阻塞的方式,用于服務(wù)器響應(yīng)。
服務(wù)器處理命令并將響應(yīng)發(fā)送回客戶端。
如果需要一次執(zhí)行多個(gè)redis命令,以往的方式需要發(fā)送多次命令請(qǐng)求,有redis服務(wù)器依次執(zhí)行,并返回結(jié)果,
為了解決此類問(wèn)題,設(shè)計(jì)者設(shè)計(jì)出了redis管道命令:
客戶端可以向服務(wù)器發(fā)送多個(gè)請(qǐng)求,而不必等待回復(fù),并最終在一個(gè)步驟中讀取回復(fù),從而大大增加了協(xié)議性能
代碼示例:
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);
參數(shù)說(shuō)明:
Redis::MULTI或Redis::PIPELINE. 默認(rèn)是 Redis::MULTI
Redis::MULTI:將多個(gè)操作當(dāng)成一個(gè)事務(wù)執(zhí)行
Redis::PIPELINE:讓(多條)執(zhí)行命令簡(jiǎn)單的,更加快速的發(fā)送給服務(wù)器,但是沒(méi)有任何原子性的保證
結(jié)果如下圖,可以看出每次執(zhí)行set/get命令,并沒(méi)有被redis服務(wù)器立即執(zhí)行,執(zhí)行結(jié)果被放在了最后的result中
---------------------?
作者:陌上青苔?
來(lái)源:CSDN?
原文:https://blog.csdn.net/weijianfengyu/article/details/62891813?utm_source=copy?
版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請(qǐng)附上博文鏈接!
來(lái)源:https://blog.csdn.net/weijianfengyu/article/details/62891813
總結(jié)
以上是生活随笔為你收集整理的PHP中Redis管道的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: redis 使用管道提升写入的性能[pi
- 下一篇: php7安装kafka扩展(已经测试)