手册得知 pipeline 只是把多个redis指令一起发出去,redis并没有保证这些指定的执行是原子的;multi相当于一个redis的transaction的,保证整个操作的原子性,避免由于中途出错而导致最后产生的数据不一致。通过测试得知,pipeline方式执行效率要比其他方式高10倍左右的速度,启用multi写入要比没有开启慢一点。

  上代码,望高手指点。

<?php
set_time_limit(0);
ini_set('memory_limit','1024M');$redis = new Redis();G('1');
$redis->connect('127.0.0.1');
//不具备原子性 ,管道
$redis->pipeline();
for ($i=0;$i<100000;$i++)
{$redis->set("test_{$i}",pow($i,2));$redis->get("test_{$i}");
}
$redis->exec();
$redis->close();
G('1','e');G('2');
$redis->connect('127.0.0.1');
//事物具备原子性
$redis->multi();
for ($i=0;$i<100000;$i++)
{$redis->set("test_{$i}",pow($i,2));$redis->get("test_{$i}");
}
$redis->exec();
$redis->close();
G('2','e');//普通
G('3');
$redis->connect('127.0.0.1');
//事物具备原子性
for ($i=0;$i<100000;$i++)
{$redis->set("test_{$i}",pow($i,2));$redis->get("test_{$i}");
}
$redis->close();
G('3','e');function G($star,$end = '')
{static $info = array();if (!empty($end)){$info[$end] = microtime(true);$sconds = $info[$end] - $info[$star];echo $sconds,"ms<br/>";} else {$info[$star] =  microtime(true);}
}

测试输出的结果:

0.043839931488037ms
0.4456958770752ms
0.45916604995728ms

redis中multi和pipeline区别以及效率(推荐使用pipeline)相关推荐

  1. Redis中Value使用hash类型的效率是普通String的两倍

    什么Redis? 点击这里 最近要开发的一个项目是分布式缓存组件,解决参数缓存高效获取的问题.参数达到了500万级别,刚刚开始了解Redis.做设计的时候考虑到Value使用哪种类型的问题? 主要面临 ...

  2. 一致性hash和redis中hash槽的区别

    一致性hash主要用于分布式系统中,用于解决数据选择节点存储.选择节点访问.增删节点后数据的迁移和重分布问题.redis集群并没有使用一致性hash,而是使用了hash槽来解决数据分配的问题. 一致性 ...

  3. Redis中jedis与lettuce区别

    1.Jedis 优点: 提供了比较全面的 Redis 操作特性的 API API 基本与 Redis 的指令一一对应,使用简单易理解 缺点: 同步阻塞 IO 不支持异步 是基于tcp的阻塞式连接方式 ...

  4. php怎么用redisson,Redis中RedisTemplate和Redisson管道的使用

    当对Redis进行高频次的命令发送时,由于网络IO的原因,会耗去大量的时间.所以Redis提供了管道技术,就是将命令一次性批量的发送给Redis,从而减少IO. 一.Jedis对redis的管道进行操 ...

  5. redis中的multi和pipeline

    事务块 multi redis中的 multi 方法,提供了一个队列用于缓存多个指令,在客户端调用 exec 后将该队列中的指令批量执行,执行过程中不会被其他指令干扰(具有原子性). 客户端每发送一个 ...

  6. redis的MULTI与PIPELINE

    1. 问题 redis的multi相信很多同学用过,先看下面的代码. <?php $redis = new Redis(); $host = "10.136.30.144"; ...

  7. Redis追命连环问,你能回答到第几问?(中)Redis性能,与memcache区别,淘汰策略及数据持久化

    ​上次的Redis连环问问到了Redis是什么,Redis支持的数据类型和缓存雪崩缓存穿透缓存击穿. Redis常见面试题连环问,你能回答到第几问?(上) Redis常见面试题连环问,你能回答到第几问 ...

  8. php使用hset报错,redis中set和hset的区别和使用场景

    下面由redis教程栏目给大家介绍redis中set和hset的区别和使用场景,希望对需要的朋友有所帮助! redis中存数据时,到底什么时候用 hset 相比于 set 存数据时又有什么不一样? s ...

  9. php中的 i详解,浅析PHP中的i++与++i的区别及效率

    先看看基本区别: i++ :先在i所在的表达式中使用i的当前值,后让i加1 ++i :让i先加1,然后在i所在的表达式中使用i的新值 看一些视频教程里面写for循环的时候都是写 ++i 而不是 i++ ...

最新文章

  1. VMware克隆出来的网卡错误
  2. linux存储--共享内存机制shm(十三)
  3. 关于自动驾驶的思考以及我准备做的事情
  4. Python 中的 lstrip、rstrip、strip
  5. 几种添加系统环境变量方法和区别
  6. AI领域最最最稀缺的人才——AI架构师
  7. Promise对象的创建与使用
  8. Codeforces Global Round 14 E. Phoenix and Computers 思维 + dp
  9. How to Fix Git Push Time Consuming Issue in a Big Team?
  10. JavaScript的DOM编程--01--js代码的写入位置
  11. 关于java集合的知识点_java中集合的知识点
  12. ios网络编程(二)之网络连接
  13. 整理 Mac 安装 oracle
  14. 乖离性暗机器人_乖离性百万亚瑟王超弩级暗机器人复刻攻略分享
  15. latex系列---Latex参考文献的引用
  16. idea配置php开发环境以及配置debug
  17. 利用反正切函数展开计算∏的近似值
  18. 拿到蚂蚁金服 offer, 我不去了
  19. python1到100奇数相加_如何使用while语句求1到100的奇数和
  20. PCA (主成分分析)详解 (写给初学者)

热门文章

  1. 用于PC的骁龙1000近似实锤了,高通员工LinkedIn泄露天机
  2. 对话彭军、楼教主:1.12亿美元融资来了,Pony.ai车队也已在路上 | 变局者
  3. Hinton:今年AI没有重大突破,但三件事值得关注
  4. 干货分享 | 详解特征工程与推荐系统及其实践(附PPT)
  5. 离模拟世界又近一步!谷歌推出开源量子计算平台OpenFermion
  6. 一个基于区块链的AI平台即将ICO:这可以说是今年最潮的项目了
  7. 人类与AI结合的最佳形态是什么样?
  8. digiKam 6.1.0 发布,相片管理工具
  9. 通过JDK动态代理实现拦截器
  10. 如何清理Docker占用的磁盘空间?