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 不同插入方法的性能对比的更多相关文章

  1. PHP生成随机密码的4种方法及性能对比

    PHP生成随机密码的4种方法及性能对比 http://www.php100.com/html/it/biancheng/2015/0422/8926.html 来源:露兜博客   时间:2015-04 ...

  2. 大数据量下MySQL插入方法的性能比较

    不管是日常业务数据处理中,还是数据库的导入导出,都可能遇到需要处理大量数据的插入.插入的方式和数据库引擎都会对插入速度造成影响,这篇文章旨在从理论和实践上对各种方法进行分析和比较,方便以后应用中插入方 ...

  3. 【Java必修课】判断String是否包含子串的四种方法及性能对比

    1 简介 判断一个字符串是否包含某个特定子串是常见的场景,比如判断一篇文章是否包含敏感词汇.判断日志是否有ERROR信息等.本文将介绍四种方法并进行性能测试. 2 四种方法 2.1 JDK原生方法St ...

  4. 基于Modbus三种CRC16校验方法的性能对比

    目录 1.背景介绍 2. CRC校验的三种方法 2.1. 直接计算CRC校验 2.2. 查短表法计算CRC16校验 2.3.查大表法计算CRC16校验 3.三种校验方式的测试方法 3.1.直接计算CR ...

  5. Javascript中遍历数组方法的性能对比

    Javascript中常见的遍历数组的方法 1.for循环 for(var i = 0; i < arr.length; i++) { // do something. } 2.for循环的改进 ...

  6. mysql与redis在各种情况下性能对比

    数据表结构 CREATE TABLE `jx_goods_test` ( `id` int(11) NOT NULL AUTO_INCREMENT, `goods_name` varchar(100) ...

  7. js中数组去重方法及性能对比

    js中数组的 数组去重 常用的数组去重方法以及效率分析: 首先我们先构建一个数组,主要是用于进行去重实验,我们主要实验的量级为1000,10000,100000,500000.具体的生成数组的方法如下 ...

  8. MySQL查询随机数据的4种方法和性能对比

    从MySQL随机选取数据也是我们最常用的一种发发,其最简单的办法就是使用”ORDER BY RAND()”,本文介绍了包括ORDER BY RAND()的4种获取随机数据的方法,并分析了各自的优缺点. ...

  9. JdbcTemplate中的exectue和queryForList方法的性能对比

    @Autowired JdbcTemplate jdbcParam; pstm =                 jdbcParam.getDataSource()                ...

  10. 基于mybatis向oracle中插入数据的性能对比

    数据库表结构: 逐条插入sql语句: <insert id="insert" parameterType="com.Structure"> INSE ...

随机推荐

  1. 如何不使用图形来创建ACFS文件系统

    客户需求,提供在19c环境下,ACFS的命令行操作的具体步骤,便于在图形界面不可用场景使用. 当然,如果有图形可操作,还是推荐首选图形,避免复杂度以及不必要的错误. 其实之前有测试过11g环境下的AC ...

  2. vulnhub_jangow

    来源 vulnhub:https://www.vulnhub.com/entry/jangow-101,754/ 描述 难度:简单 这在 VirtualBox 而不是 VMware 上效果更好 我这里 ...

  3. 精彩回顾 | 金蝶云苍穹技术开放日xUser Club广州站

    6月14日,以"项目实践案例:性能优化与实践"为主题的金蝶云·苍穹技术开放日广州站圆满落幕.此次活动吸引了50多位开发者到场,大家不仅聆听了开发者关于"代码检查.性能优化 ...

  4. 第一章 : Linux入门

    1. 概述 ‍ ​​ ‍ 2. Linux 和 Windows 区别 ‍ ​​ ‍ 3. Centos 下载地址 ‍ 网易镜像:http://mirrors.163.com/centos/7/isos ...

  5. Nmap使用教程(初级篇)

    基本扫描技术 扫描单个网络 nmap 192.168.1.1/www.baidu.com 扫描多个网络/目标 nmap 192.168.1.1 192.168.1.2 #将扫描同个网段内不同的ip地址 ...

  6. k8s部署springboot

    综述 首先介绍发布步骤. 1.从代码仓库下载代码,比如GitLab: 2.接着是进行打包,比如使用Maven: 3.编写Dockerfile文件,把步骤2产生的包制作成镜像: 4.上传步骤3的镜像到远 ...

  7. Flutter ListView 不满屏 无法滚动

    场景: flutter ListView 在做上拉加载的时候,未list添加controller后,数据不满屏,无法滚动 解决: 未listview 设置: physics: const Always ...

  8. (占坑编辑中)hexo博客github page更换域名

    hexo博客github page更换域名 檗科下的Cname文件一定要改为最近的域名

  9. MAUI 框架开发 将 MAUI 嵌入到 WPF 控件里

    本文将介绍如何将 MAUI 的底层替换为 WPF 框架层,且将 MAUI 的内容嵌入到 WPF 的一个控件里面,无 UI 框架嵌入的空域问题 本文是 MAUI 框架开发博客,而不是 MAUI 应用开发 ...

  10. 安装.NET Framework4.5以上版本受阻怎么办?

    安装和卸载 .NET Framework 受阻疑难解答 - .NET Framework | Microsoft Learn Windows RT 8.1.Windows 8.1 和 Windows ...