redis 中pipline,mset, mget使用对比
2017-08-15 11:22
423 查看
redis 中pipline,mset, mget使用对比
redis 中是支持 pipline的,它是管道的概念,也就是多次执行,一次返回。加快了执行的速度。今天来试一下,如何使用管道
$redis = new Redis(); $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(); var_dump($replies)
这样就完成了一个管道多次取值。
打印下这个值:
Array ( [0] => 1 [1] => 0000 [2] => 1 [3] => 0001 [4] => 1 [5] => 0002 [6] => 1 [7] => 0003 [8] => 1 [9] => ......
第一个key是 set 返回的值,1表示成功。第二是get到的值。
看下和传统的对比下执行速度:
$s1 = microtime(true); $redis = Rcache::init(); $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(); $s2 = microtime(true); echo $s2 - $s1; $s3 = microtime(true); echo PHP_EOL; for ($i=0; $i < 10000 ; $i++) { $redis->set("key1::$i", str_pad($i, 4, '0', 0)); $redis->get("key1::$i"); } $s4 = microtime(true); echo $s4 - $s3;
打印下时间:
0.149090051651 38.773063898087
快了380倍!!! 厉害啊。
其实,mset和mget也可以实现多次复制,多次取值的操作:
for ($i=0; $i < 10000 ; $i++) { $mset["key1::$i"] = str_pad($i, 4, '0', 0); $mget[] = "key1::$i"; } $redis->mset($mset); $result = $redis->mget($mget);
也可以达到相同的效果。和 pipline对比下看看?
$s1 = microtime(true);
$redis = Rcache::init();
$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();
$s2 = microtime(true);
echo $s2 - $s1;
$s3 = microtime(true); echo PHP_EOL;
for ($i=0; $i < 10000 ; $i++) { $mset["key1::$i"] = str_pad($i, 4, '0', 0); $mget[] = "key1::$i"; } $redis->mset($mset); $result = $redis->mget($mget);
$s4 = microtime(true);
echo $s4 - $s3;
看下时间对比:
0.12792420387268 0.066974878311157 0.12186408042908 0.074720859527588 0.08265495300293 0.095463037490845
发现有时候, mget更快。厉害了。
然后,如果for 循环 次数越多,其实,mset和mget更快。
相关文章推荐
- 使用django-pipline 静态管理器 和 django-compress压缩工具
- redis使用-1-与memcache对比
- JAVA 中 Redis与ehcache对比与使用
- Python3网络爬虫:Scrapy入门之使用ImagesPipline下载图片
- 与不同框架整合时mybatis的使用区别 (对比redis)
- Redis和Memcached在功能、性能以及内存使用效率上的对比
- 【redis】redis使用前后性能对比
- 分布式缓存集群方案特性使用场景(Memcache/Redis(Twemproxy/Codis/Redis-cluster))优缺点对比及选型
- Redis容量及使用规划(redis,memcached,mysq对比)
- JAVA 中 Redis与ehcache对比与使用
- pipline 简单是使用
- Redis管道简单使用及与普通方式效率对比
- [置顶]C#中使用Redis不同数据结构的内存占有量的疑问和对比测试
- 分布式缓存集群方案特性使用场景(Memcache/Redis(Twemproxy/Codis/Redis-cluster))优缺点对比及选型
- 常见NoSQL的对比及使用场景(Redis,memcached,mongodb)
- Python操作Redis之mset和mget
- redis-cluster集群模式下使用pipeline,mget,mset批量操作
- JAVA 中 Redis与ehcache对比与使用
- JAVA 中 Redis与ehcache对比与使用