首页 > 数据库 >Redis 不同插入方法的性能对比

Redis 不同插入方法的性能对比

时间:2023-09-20 16:26:36浏览次数:37  
标签:遍历 插入 Redis 插入方法 管道 内存 JVM 单条 对比

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,插入方法,管道,内存,JVM,单条,对比
From: https://www.cnblogs.com/SihanLin/p/17717650.html

相关文章

  • redis
    前言原文作者:KyleViolet文章链接:Redis入门|Kyle'sBlog(cyborg2077.github.io)版权声明:本博客所有文章除特别声明外,均采用CCBY-NC-SA4.0许可协议。转载请注明来自Kyle'sBlog!本文章为在原文基础上,进行稍作修改的文章,版权声明如上。本文为瑞吉外卖项目的后续......
  • Redis 面试常见问答
    本文出自:https://thinkinjava.cn作者:莫那鲁道1.什么是缓存雪崩?怎么解决?一般而言,我们会利用缓存来缓冲对数据库的冲击,假如缓存无法正常工作,所有的请求便会直接发送至数据库,进而导致数据库崩溃,从而导致整个系统崩溃。如何解决呢?2种策略(同时使用):对缓存做高可用,防止缓......
  • redis cluster三主六从 redis三主三从集群搭建
    转自:https://blog.51cto.com/u_16099166/6885197一、下载安装二、本文架构(三台服务器,每台部署两个节点,主从同步,生产最好是部署六台服务器): 三、进入redis安装目录,复制redis.conf文件,建立从节点配置文件1#进入redis安装目录2cdredis34#复制redis.conf文件5cpredis.......
  • redis三主三从哨兵模式 redis三主三从集群
    转自:https://blog.51cto.com/u_16213559/7033634conf复制/usr/local/src/redis-6.2.6文件夹下redis.conf文件到/usr/local/src/master-slave文件夹中命名为redis6381.conf1#允许访问的地址,默认是127.0.0.1,会导致只能在本地访问。修改为0.0.0.0则可以在任意IP访问,生产环境不......
  • 解决安装VS2022时,出现未能安装包"Microsoft.VisualCpp.Redist.14,version=14.32.31332
    解决安装VS2022时,出现未能安装包"Microsoft.VisualCpp.Redist.14,version=14.32.31332,chip”=x86"问题描述之前安装过MSSQLServer和VS2022,但是后来又卸载了。现在重装VS2022出现两个报错:无法安装Microsoft.VisualCpp.Redist.14,version=14.32.31332,chip”=x86无法安装Micr......
  • WEB网页直接播放摄像头RTSP视频流方案汇总,服务器转码和直接播放对比!
    关于网页播放摄像头RTSP视频流,网上有很多免费开源方案,大多数是通过把RTSP转码成HLS或者RTMP视频流,然后通过Flash插件播放,但是大多数延迟非常高(比如:HLS延迟达到十几秒),并且播放多路或者播放高清视频也非常容易卡顿(服务器转码,资源消耗非常大)。下面介绍两种用的比较多的方案:1.ffmpeg......
  • redis和mysql的区别以及它们是如何配合使用的
    redis和mysql的区别:1、从类型上来说,mysql是关系型数据库,redis是缓存数据库。2、mysql用于持久化的存储数据到硬盘,功能强大,但是速度较慢。redis用于存储使用较为频繁的数据到缓存中,读取速度快。3、mysql和redis因为需求的不同,一般都是配合使用。mysql和redis的数据库类型,m......
  • Redis7 10大数据类型(Redis基数统计)
    一、概述用途:统计某个网站的UV,统计某个文章的UV什么是UVUniqueVisitor独立访客,一般理解为客户端ip用户搜索网站关键词的数量统计用户每天搜索不同词条个数去重复统计功能的基数估计算法,就是HyperLogLog基数是一种数据集,去重复后的真实个数案例case基数统计用户统计......
  • 基本环境安装 jdk,mq,redis,nginx
    JDK:解压安装包,命令为tar-zxvfjdk-8u381-linux-x64.tar.gz配置环境变量,使用vim命令(需要安装vim,安装命令为:yuminstallvim)修改/etc/profile文件,在文件末尾加入如下配置 JAVA_HOME=/usr/local/jdk8/jdk1.8.0_381 PATH=$JAVA_HOME/bin:$PATH重新加载profile文件,使更改的配置......
  • 详细解释一下redis的缓存击穿、缓存雪崩的原理,以及如何避免?
    缓存击穿和缓存雪崩是两种常见的缓存问题,它们会对系统性能和可用性产生负面影响。以下是对这两个问题的详细解释以及如何避免它们的方法:缓存击穿(CacheMiss)原理:缓存击穿是指在高并发的情况下,多个请求同时访问缓存,但缓存中不存在所需数据。这些请求会穿透缓存,直接访问底层数据库......