redis中multi和pipeline区别以及效率(推荐使用pipeline)
手册得知 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)相关推荐
- Redis中Value使用hash类型的效率是普通String的两倍
什么Redis? 点击这里 最近要开发的一个项目是分布式缓存组件,解决参数缓存高效获取的问题.参数达到了500万级别,刚刚开始了解Redis.做设计的时候考虑到Value使用哪种类型的问题? 主要面临 ...
- 一致性hash和redis中hash槽的区别
一致性hash主要用于分布式系统中,用于解决数据选择节点存储.选择节点访问.增删节点后数据的迁移和重分布问题.redis集群并没有使用一致性hash,而是使用了hash槽来解决数据分配的问题. 一致性 ...
- Redis中jedis与lettuce区别
1.Jedis 优点: 提供了比较全面的 Redis 操作特性的 API API 基本与 Redis 的指令一一对应,使用简单易理解 缺点: 同步阻塞 IO 不支持异步 是基于tcp的阻塞式连接方式 ...
- php怎么用redisson,Redis中RedisTemplate和Redisson管道的使用
当对Redis进行高频次的命令发送时,由于网络IO的原因,会耗去大量的时间.所以Redis提供了管道技术,就是将命令一次性批量的发送给Redis,从而减少IO. 一.Jedis对redis的管道进行操 ...
- redis中的multi和pipeline
事务块 multi redis中的 multi 方法,提供了一个队列用于缓存多个指令,在客户端调用 exec 后将该队列中的指令批量执行,执行过程中不会被其他指令干扰(具有原子性). 客户端每发送一个 ...
- redis的MULTI与PIPELINE
1. 问题 redis的multi相信很多同学用过,先看下面的代码. <?php $redis = new Redis(); $host = "10.136.30.144"; ...
- Redis追命连环问,你能回答到第几问?(中)Redis性能,与memcache区别,淘汰策略及数据持久化
上次的Redis连环问问到了Redis是什么,Redis支持的数据类型和缓存雪崩缓存穿透缓存击穿. Redis常见面试题连环问,你能回答到第几问?(上) Redis常见面试题连环问,你能回答到第几问 ...
- php使用hset报错,redis中set和hset的区别和使用场景
下面由redis教程栏目给大家介绍redis中set和hset的区别和使用场景,希望对需要的朋友有所帮助! redis中存数据时,到底什么时候用 hset 相比于 set 存数据时又有什么不一样? s ...
- php中的 i详解,浅析PHP中的i++与++i的区别及效率
先看看基本区别: i++ :先在i所在的表达式中使用i的当前值,后让i加1 ++i :让i先加1,然后在i所在的表达式中使用i的新值 看一些视频教程里面写for循环的时候都是写 ++i 而不是 i++ ...
最新文章
- VMware克隆出来的网卡错误
- linux存储--共享内存机制shm(十三)
- 关于自动驾驶的思考以及我准备做的事情
- Python 中的 lstrip、rstrip、strip
- 几种添加系统环境变量方法和区别
- AI领域最最最稀缺的人才——AI架构师
- Promise对象的创建与使用
- Codeforces Global Round 14 E. Phoenix and Computers 思维 + dp
- How to Fix Git Push Time Consuming Issue in a Big Team?
- JavaScript的DOM编程--01--js代码的写入位置
- 关于java集合的知识点_java中集合的知识点
- ios网络编程(二)之网络连接
- 整理 Mac 安装 oracle
- 乖离性暗机器人_乖离性百万亚瑟王超弩级暗机器人复刻攻略分享
- latex系列---Latex参考文献的引用
- idea配置php开发环境以及配置debug
- 利用反正切函数展开计算∏的近似值
- 拿到蚂蚁金服 offer, 我不去了
- python1到100奇数相加_如何使用while语句求1到100的奇数和
- PCA (主成分分析)详解 (写给初学者)
热门文章
- 用于PC的骁龙1000近似实锤了,高通员工LinkedIn泄露天机
- 对话彭军、楼教主:1.12亿美元融资来了,Pony.ai车队也已在路上 | 变局者
- Hinton:今年AI没有重大突破,但三件事值得关注
- 干货分享 | 详解特征工程与推荐系统及其实践(附PPT)
- 离模拟世界又近一步!谷歌推出开源量子计算平台OpenFermion
- 一个基于区块链的AI平台即将ICO:这可以说是今年最潮的项目了
- 人类与AI结合的最佳形态是什么样?
- digiKam 6.1.0 发布,相片管理工具
- 通过JDK动态代理实现拦截器
- 如何清理Docker占用的磁盘空间?