redis批量操作及性能分析
redis批量操作及性能分析
用过redis的小伙伴都知道,这东西是C/S的,就单纯的ser key vvv 就要走一次TCP,记得官方是说redis的qps将近10W,这...我不太敢相信,一秒钟之内对一个服务10W次TCP会啥样,当然可以走集群负载均衡,把Redis分片了,但是分片的话又会设计到很多东西,之前我整理过,想了解的看下这: https://blog.csdn.net/u013761036/article/details/103636870 。
OK下面说正事,基于redis的这种模式,我们在日常使用的时候一定要注意进行批量操作,这对系统调优很重要,带来的效果会非常大。
几种常见的批量操作方式
- 批量命令(multi)
- 管道(pipelining)
- 事务(transaction)
- 基于事务的管道(transaction pipelining)
1.批量命令:
每个数据类型都对应着几个批量操作的命令,例如mset/mget/hmset/hmget...,这种的一次可以对多个key进行操作,相比于所有姿势这个是最快的,因为这里面的对多个key进行一次性操作,是一个命令,注意,是一个命令。不是把很多命令打包,也不是缓存了很多命令最后一起执行。这是最快的方式。一次连接,一个命令。并且这个是原子操作。但是缺点是并不是所有命令都支持,只支持一小部分基本的命令,所以最终结论是,能用这个就一定用这个,不能的话在用其他批量处理的姿势。
2.管道:
管道的话这么理解,有9个任务,我们直接扔在一个管道里了(过大的话会被自动分批发送),可能会变成3截。每截3个。每次发送一截。这样不用建立9次连接发送9个。3次就可以了,这个就是管道的原理。同时一定要注意,管道的批量操作是建立在协议上的优化,就是就是依靠协议进行分批操作。同时一定一定记住,管道不是原子操作。
3.事务:
这么理解,先喊一声 准备,然后把所有任务都扔在车里(此时已经陆续的传给操作端了),然后再喊开始,所有被传过去的任务才开始执行。就是分三部分,准备好了、上任务、干活。是不是感觉这东西可能会比管道慢点,因为管道是 仍一批过去、干活 再扔一批过去、干活 不用等都到了再开始统一干活。没错。实际测试结果也是事务略微慢于管道一点点,但是重点是这东西是 原子操作 原子操作 原子操作。
4.基于事务的管道:
管道是建立在协议上的,而事务是redis的命令。量道理可以通过协议的思路,也是就是管道把事务给拆成一节一节的。这个姿势就是 基于事务的管道。性能略微好于事务。效果不明显,操作也比较麻烦,所以较少使用。通常姿势就是 能1.批量就批量,不能的话如果必须原子操作就3.事务,否则就2.管道。
5.Redis批量操作原子性:还有就是关于每个姿势到底是不是原子操作这个事,有很多争论,其实要是理解redis工作原理和研究过redis分片的话(最好手写那两个算法,很简单),很容易分清状况,并且考虑的时候要全面,分片姿势有很多种的,虽然常见算法有两种,key范围和hash key,但是别忘记了分片的位置也很关键。你可以在客户端分片(这可能会导致业务代码里有分片代码),也可以在中间件里分,就是把任务都扔给一个类似消息队列的,然后统一处理,再或者自己搭建redis集群,然后在入口负载均衡的地方分。这导致的结果都将不一样,同时还要考虑你每个环节用的什么框架,如果是手写的要看自己的实现方式是啥样的。有的是命令转发,有的是直接自己处理了,然后解析命令了。这都不一样。
等有时间,我会补一个压力测试的笔记。
redis批量操作及性能分析相关推荐
- 一次Redis client组件性能分析
BeetleX也扩展了RedisClient驱动,写这些高并发应用的驱动性能测试分析是必不可少的.在最近一次测试中发现测试采样度不足,引起的一些问题:通过这一次的问题也警醒一下自己在以后设计上要考虑更 ...
- redis性能分析工具redis-faina
redis性能分析工具redis-faina redis-faina是一个通过解析redis的MONITOR命令,从而对redis实例进行性能诊断的工具. 该工具使用虽然简单,但是功能还是很不错,对于 ...
- redis geo 性能分析及对问题的思考
redis geo 性能分析及对问题的思考 文章目录 redis geo 性能分析及对问题的思考 对 redis 进行压力测试 对 redis 进行满载压力分析 georadiusGeneric me ...
- redis提高oracle性能,redis性能分析与优化建议
首先,并不是说redis是内存应用就完全没性能问题,用的不好,还是会出现各种状况,例如RDB频繁,碎片太多等. 性能分析 info信息: 在redis-cli进入登录界面后,输入info all,或者 ...
- Linux常用性能分析工具汇总
文章目录 性能分析工具 top pstree mpstat vmstat pidstat perf proc tcpdump bcc工具箱 cachestat cachetop memleak fil ...
- 基于linux服务器的性能分析与优化
基于linux服务器的性能分析与优化 方面:硬件系统软件网络 现象:系统不稳定相应速度慢 web无法打开打开速度慢 方案:硬件故障更换硬件或升级硬件 系统问题修改系统参数和配置 软件问题修改和升级软件 ...
- Python MySQLdb 循环插入execute与批量插入executemany性能分析(list批量写法亲测成功)
用Python连接MySQL数据库时,会用到MySQLdb库,这里下载↓↓↓ https://pypi.python.org/pypi/MySQL-python/ 这个库提供了对数据库的普遍操作,增删 ...
- Redis 数据同步机制分析
Redis的主从同步机制可以确保redis的master和slave之间的数据同步.按照同步内容的多少可以分为全同步和部分同步:按照同步的时机可以分为slave刚启动时的初始化同步和正常运行过程中的数 ...
- 4大JVM性能分析工具详解,及内存泄漏分析方案
谈到性能优化分析一般会涉及到: Java代码层面的,典型的循环嵌套等 还会涉及到Java JVM:内存泄漏溢出等 MySQL数据库优化:分库分表.慢查询.长事务的优化等 阿里P8架构师谈:MySQL慢 ...
最新文章
- silverlight 无法发布 如何灵活配置IP
- java递归排雷_C语言实现扫雷小游戏
- postgres sql 多表联合查询_从零学会SQL-多表查询
- linux驱动模型开发——linux platform总线机制讲解与实例开发
- Java黑皮书课后题第7章:**7.3(计算数字的出现次数)编写程序,读取1到100之间的整数,然后计算每个数出现的次数。假定输入0表示结束
- 图像处理前沿技术_深入浅出人工智能前沿技术—机器视觉检测,看清人类智慧工业...
- 为什么要用!DOCTYPE声明
- 【Breadth-first Search 】515. Find Largest Value in Each Tree Row
- iOS中的MVC设计模式
- 线性表的链表存储实现
- android The public type classname must be defined in its own file 报错
- mysql服务突然丢失解决方案
- php mescroll,mescroll.js上拉加载下拉刷新组件使用详解
- Office 浏览器
- 2009国家公务员面试过关点点通
- 未来教育计算机二级python_计算机二级题库
- unity 球体表面平均分割点
- python 自动打包pyd
- 大兴安岭和大草原的秋季游玩攻略
- 有限公司清算组成员怎样构成