Redis 管道技術
Redis 管道技術可以在服務端未響應時,客戶端可以繼續向服務端發送請求,并最終一次性讀取所有服務端的響應。
操作方法
方法名稱 | 參數 | 說明 | 備注 |
---|---|---|---|
discardPipe | 取消管道 | ||
execPipe | 一次性發送命令 | ||
startPipe | 管道開始記錄 |
開始管道之后,操作命令都將返回"PIPE",直到取消管道或者執行,執行exec之后,將返回所有命令結果
管道開始后,所有命令調用之后并不會執行,而是會記錄起來,然后等待exec的時候一次性發送給redis服務端 所以需要注意內存,一次管道不要執行過多的命令
集群目前不支持管道模式,將會出現錯誤
基本使用
go(function () {
$redis = new \EasySwoole\Redis\Redis(new \EasySwoole\Redis\Config\RedisConfig([
'host' => '127.0.0.1',
'port' => '6379',
'auth' => 'easyswoole',
'serialize' => \EasySwoole\Redis\Config\RedisConfig::SERIALIZE_NONE
]));;
$redis->get('a');
$data = $redis->startPipe();
var_dump($data);
$redis->del('ha');
$data = $redis->hset('ha', "a", "a\r\nb\r\nc");
var_dump($data);
$data = $redis->hset('ha', 'b', '2');
var_dump($data);
$data = $redis->hset('ha', 'c', '3');
var_dump($data);
$data = $redis->hGetAll('ha');
var_dump($data);
$data = $redis->execPipe();
var_dump($data);
$redis->startPipe();
$data = $redis->set("a", '1');
var_dump($data);
$data = $redis->discardPipe();
var_dump($data);
});