概念 如果需要一次执行多个redis命令,以往的方式需要发送多次命令请求,有redis服务器依次执行,并返回结果,为了解决此类问题,设计者设计出了redis管道命令:客户端可以向服务器发送多个请求,而不必等待回复,并最终在一个步骤中读取回复,从而大大增加了协议性能 代码示例 2 、使用管道技术 参数说明: 不使用管道 开始内存:389984 使用管道 可以看到使用管道提高了将近100倍。但是缺点也很明显内存飙升的很厉害。没有任何原子性的保证。批量执行命令,不能无限。
1 、不使用管道技术$stime=microtime(true); //获取程序开始执行的时间 echo '开始内存:'.memory_get_usage(), ''; echo PHP_EOL; $redis = new Redis(); $redis->connect('127.0.0.1',6379); $t1 = time(); for($i= 0; $i<10000 ; $i++) { $redis->set("key::$i",str_pad($i,4,'0',0)); $redis->get("key::$i"); } $etime=microtime(true);//获取程序执行结束的时间 $total=($etime-$stime); //计算差值 echo "[页面执行时间:{$total} ]s"; echo PHP_EOL; echo '运行后内存:'.memory_get_usage(), ''; echo PHP_EOL;
[root@localhost PHPCreeper-Application]# php test.php 开始内存:389984 [页面执行时间:1.1715140342712 s 运行后内存:398912
<?php $stime=microtime(true); //获取程序开始执行的时间 echo '开始内存:'.memory_get_usage(), ''; echo PHP_EOL; $redis = new Redis(); $redis->connect('127.0.0.1',6379); $pipe=$redis->multi($redis::PIPELINE); for($i= 0; $i<10000 ; $i++) { $pipe->set("key::$i",str_pad($i,4,'0',0)); $pipe->get("key::$i"); } $replies=$pipe->exec(); $etime=microtime(true);//获取程序执行结束的时间 $total=($etime-$stime); //计算差值 echo "[页面执行时间:{$total} ]s"; echo PHP_EOL; echo '运行后内存:'.memory_get_usage(), ''; echo PHP_EOL;
[root@localhost PHPCreeper-Application]# php test.php 开始内存:390024 [页面执行时间:0.017589092254639 ]s 运行后内存:1771680
Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI
Redis::MULTI:将多个操作当成一个事务执行
Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证
[页面执行时间:1.1715140342712 s
运行后内存:398912
开始内存:390024
[页面执行时间:0.017589092254639 ]s
运行后内存:1771680
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算