Redis 管道技术

Redis 管道技术可以在服务端未响应时,客户端可以继续向服务端发送请求,并最终一次性读取所有服务端的响应。

操作方法

方法名称参数说明备注
discardPipe取消管道
execPipe一次性发送命令
startPipe管道开始记录

开始管道之后,操作命令都将返回”PIPE”,直到取消管道或者执行,执行exec之后,将返回所有命令结果

管道开始后,所有命令调用之后并不会执行,而是会记录起来,然后等待exec的时候一次性发送给redis服务端 所以需要注意内存,一次管道不要执行过多的命令

集群目前不支持管道模式,将会出现错误

基本使用

  1. go(function () {
  2. $redis = new \EasySwoole\Redis\Redis(new \EasySwoole\Redis\Config\RedisConfig([
  3. 'host' => '127.0.0.1',
  4. 'port' => '6379',
  5. 'auth' => 'easyswoole',
  6. 'serialize' => \EasySwoole\Redis\Config\RedisConfig::SERIALIZE_NONE
  7. ]));;
  8. $redis->get('a');
  9. $data = $redis->startPipe();
  10. var_dump($data);
  11. $redis->del('ha');
  12. $data = $redis->hset('ha', "a", "a\r\nb\r\nc");
  13. var_dump($data);
  14. $data = $redis->hset('ha', 'b', '2');
  15. var_dump($data);
  16. $data = $redis->hset('ha', 'c', '3');
  17. var_dump($data);
  18. $data = $redis->hGetAll('ha');
  19. var_dump($data);
  20. $data = $redis->execPipe();
  21. var_dump($data);
  22. $redis->startPipe();
  23. $data = $redis->set("a", '1');
  24. var_dump($data);
  25. $data = $redis->discardPipe();
  26. var_dump($data);
  27. });