Redis 不同插入方法的性能对比
1. 测试目的
对比 Redis 不同插入方法(插入同时能设置过期时间)的性能区别。
2. 测试数据
key:SMGP_
value:JSON数据
{
"spName":"100003",
"protocol":"SMGP",
"remoteAddress":"192.192.192.192:44192",
"host":"192.192.192.192:44192",
"port":44192,
"msgIds":"192192192192192192192"
}
数据量:10万
redis:采用蓝鲸云上的 redis,模拟真实生产环境的网络影响。
3. 待测试方法
单线程
- 遍历数据列表,单条插入
- 使用管道分批插入,分为 3 批,每批 3万,最后一批 4万
- 使用管道一次性插入 10 万条
多线程
- 10 个线程分批插入,每批 1万条数据,遍历数据列表,单条插入
- 10 个线程分批插入,每批 1万条数据,使用管道一次性插入 1 万条
4. 测试结果
单线程
遍历单条插入
- 耗时:11.22698333 分钟
- JVM 堆内存使用情况:最高 572.2540665 MB
使用管道分批插入
- 耗时:两次平均 36.8785 秒
- JVM 堆内存使用情况:两次最高平均 614.52574155 MB
使用管道一次性插入
- 耗时:两次平均 34.2025 秒
- JVM 堆内存使用情况:两次最高平均 482.4296875 MB
多线程
遍历单条插入
- 耗时:两次平均 114.9095 秒
- JVM 堆内存使用情况:两次最高平均 429.8007813 MB
管道一次性插入
- 耗时:两次平均 52.51 秒
- JVM 堆内存使用情况:两次最高平均 513 MB
5. 测试结果分析
- 对于 redis 的写入操作,应尽量避免遍历单条插入,由于频繁连接和释放连接,性能太低。
- 使用管道能显著提高 redis 的写入性能。
- 使用多线程能显著提高遍历单条数据写入 redis 的性能
- 对于不同的插入方式,消耗的资源大小基本差不多。
6. 不足之处
- 由于存在网络波动,不同方法测试时,网络差异较大,可能导致结果不太准确。因此对于细微的差别无法很好判断,比如:单线程的管道和多线程的管道哪个性能更优?
- 堆内存的消耗由于使用的 jconsole 进行监控的,凭肉眼观察,不是很准确。
Redis 不同插入方法的性能对比的更多相关文章
- PHP生成随机密码的4种方法及性能对比
PHP生成随机密码的4种方法及性能对比 http://www.php100.com/html/it/biancheng/2015/0422/8926.html 来源:露兜博客 时间:2015-04 ...
- 大数据量下MySQL插入方法的性能比较
不管是日常业务数据处理中,还是数据库的导入导出,都可能遇到需要处理大量数据的插入.插入的方式和数据库引擎都会对插入速度造成影响,这篇文章旨在从理论和实践上对各种方法进行分析和比较,方便以后应用中插入方 ...
- 【Java必修课】判断String是否包含子串的四种方法及性能对比
1 简介 判断一个字符串是否包含某个特定子串是常见的场景,比如判断一篇文章是否包含敏感词汇.判断日志是否有ERROR信息等.本文将介绍四种方法并进行性能测试. 2 四种方法 2.1 JDK原生方法St ...
- 基于Modbus三种CRC16校验方法的性能对比
目录 1.背景介绍 2. CRC校验的三种方法 2.1. 直接计算CRC校验 2.2. 查短表法计算CRC16校验 2.3.查大表法计算CRC16校验 3.三种校验方式的测试方法 3.1.直接计算CR ...
- Javascript中遍历数组方法的性能对比
Javascript中常见的遍历数组的方法 1.for循环 for(var i = 0; i < arr.length; i++) { // do something. } 2.for循环的改进 ...
- mysql与redis在各种情况下性能对比
数据表结构 CREATE TABLE `jx_goods_test` ( `id` int(11) NOT NULL AUTO_INCREMENT, `goods_name` varchar(100) ...
- js中数组去重方法及性能对比
js中数组的 数组去重 常用的数组去重方法以及效率分析: 首先我们先构建一个数组,主要是用于进行去重实验,我们主要实验的量级为1000,10000,100000,500000.具体的生成数组的方法如下 ...
- MySQL查询随机数据的4种方法和性能对比
从MySQL随机选取数据也是我们最常用的一种发发,其最简单的办法就是使用”ORDER BY RAND()”,本文介绍了包括ORDER BY RAND()的4种获取随机数据的方法,并分析了各自的优缺点. ...
- JdbcTemplate中的exectue和queryForList方法的性能对比
@Autowired JdbcTemplate jdbcParam; pstm = jdbcParam.getDataSource() ...
- 基于mybatis向oracle中插入数据的性能对比
数据库表结构: 逐条插入sql语句: <insert id="insert" parameterType="com.Structure"> INSE ...
随机推荐
- 自然语言处理 Paddle NLP - 词向量应用展示
词向量(Word embedding),即把词语表示成实数向量."好"的词向量能体现词语直接的相近关系.词向量已经被证明可以提高NLP任务的性能,例如语法分析和情感分析. Padd ...
- 第三章 Linux文件与目录结构
1. Linux 文件 Linux 系统中一切皆文件. 2. Linux 目录文件(了解一下)
- 记一次 .NET 某企业采购平台 崩溃分析
一:背景 1. 讲故事 前段时间有个朋友找到我,说他们的程序有偶发崩溃的情况,让我帮忙看下怎么回事,针对这种 crash 的程序,用 AEDebug 的方式抓取一个便知,有了 dump 之后接下来就可 ...
- 高通个别驱动创建Buffer耗时高问题的解决
前言 最近在优化游戏的时候,发现在在高通特定驱动版本的机器上(855,855+等),创建VB的耗时跟VB的数量成正比,这个应该是驱动的bug.跟官方人员确认过,确实是有这个问题,他们给的解决方案是减少 ...
- Valine评论插件因为LeanCloud国内域名解析问题无法正常使用的解决方法
近日,LeanCloud 国内域名解析存在问题,Valine评论插件的评论内容都储存在LeanCloud,使用Valine评论插件的个人博客的评论及阅读数会显示失败. 关于 LeanCloud 国内域 ...
- 利用python的PyPDF2和PyMuPDF库玩转PDF的提取、合并、旋转、缩放、加密
一.安装PyPDF2和PyMuPDF库 pip install PyPDF2 pip install pymupdf # fitz是pymupdf的子模块 二.工具类代码 from PyPDF2 im ...
- 使用Locust进行分布式性能测试
Locust是一个强大的性能测试工具,用于评估系统的性能和可扩展性.本文将简洁地介绍使用Locust进行分布式性能测试的步骤和优势. 步骤: 1. 配置测试环境:在主节点和多个从节点上安装相同版本的L ...
- 1.简述Hibernate的工作原理。
(1).首先,Configuration读取Hibernate的配置文件和映射文件中的信息,即加载配置文件和映射文件,并通过Hibernate配置文件生成一个多线程的SessionFactory对象: ...
- C#/.net/DotNet/Emgu.CV裁剪照片头像
头像裁剪有利于人脸识别批量照片预处理,安防领域可以快速通过视频定位人脸,进行抓拍,做人脸识别相关功能的可能会应用到人脸裁剪,以下是我在实践中应用的代码,如有需要复制粘贴即可使用. using Emgu ...
- error: failed to push some refs to 'https://gitee.com/xxxxxxxxx/xxxxxxxt'
原因是ReadMe文件不在本地中, 此时我们要执行git pull --rebase origin master命令README.md拉到本地, 任何然后执行git push origin maste ...