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 ...
随机推荐
- drf之频率类源码
1 频率类 写一个类,继承SimpleRateThrottle,重写get_cache_key,返回[ip,用户id]什么,就以什么做限制,编写类属性 scope = 字符串,在配置文件中配置 'DE ...
- 基于nerdctl+buildkitd+containerd实现镜像构建
1.容器技术简介 容器技术除了的docker之外,还有coreOS的rkt.google的gvisor.以及docker开源的containerd.redhat的podman.阿⾥的pouch等,为了 ...
- Python获取token数据的几种方式
import requestsfrom urllib import requestimport re# 一.从响应头中获取token# 登录url = 'http://xxx.nhf.cn/api/b ...
- Electron桌面应用开发基础
Electron桌面应用开发 Electron技术架构 地址:快速入门 | Electron Chromium 支持最新特性的浏览器 Node.js Javascript运行时,可实现文件读写 Nat ...
- IDEA的安装准备
IDEA的安装 第一步 第二步 第三部 第四步
- 多模态大语言模型 LlaVA 论文解读:Visual Instruction Tuning
代码:https://github.com/haotian-liu/LLaVA 总览 在这篇论文中,作者首次尝试使用纯语言 GPT-4 生成多模态语言图像指令遵循数据(insruction-follo ...
- windows安全中心打不开
解决win11打不开安全中心的问题!!! 许多用户在最近都升级了Windows11系统,而且不少用户最近在使用Win11的时候发现自己打不开Windows安全中心 操作方法: 管理员权限打开Power ...
- 从零实现的Chrome扩展
从零实现的Chrome扩展 Chrome扩展是一种可以在Chrome浏览器中添加新功能和修改浏览器行为的软件程序,例如我们常用的TamperMonkey.Proxy SwitchyOmega.AdGu ...
- MIT6.s081/6.828 lectrue1:Introduction and examples
目前课程官网能够查到 2020,2021.2022 秋季的课程表,但是视频都是 2020 年录制的那一版 简单复习+回顾下自己的 OS 学习之旅 参考资料: 官网:https://pdos.csail ...
- Avalonia项目打包安装包
Avalonia项目打包安装包 要将 Avalonia 项目打包成安装包,你可以使用 Avalonia 发布工具来完成 1.创建一个发布配置文件 在你的 Avalonia 项目中,创建一个发布配置文件 ...