Redis实战--使用Jedis实现百万数据秒级插入
2024-09-01 12:17:30
echo编辑整理,欢迎转载,转载请声明文章来源。欢迎添加echo微信(微信号:t2421499075)交流学习。 百战不败,依不自称常胜,百败不颓,依能奋力前行。——这才是真正的堪称强大!!!
当我们使用普通方法插入大量数据到Redis的时候,我们发现,我们的插入数据并没有Redis宣传的那么快,号称有10w吞吐量的Redis为什么会在我们插入大量的数据的时候很慢呢?这就是本文要做说明的地方
10w吞吐量,大量插入没有得到体现?
Redis号称有10w的吞吐量,但是我们使用普通方法插入的时候,我们发现并没有达到这样的数据,主要原因是我们插入的时候多次连接操作,创建连接需要时间,同时,一个连接就会由一个数据包,多个数据包的传送网络并不能保证一致,这些都是影响我们大量数据插入性能的。
怎么样实现打完数据秒级插入?
使用Pipeline
实现代码如下:
// 在pom依赖中添加jedis依赖
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
// 使用jedis实现pipeline调用
public static void main(String[] args) {
Jedis jedis = new Jedis("192.168.222.135", 6379);
Pipeline pipeline = jedis.pipelined();
long startTime = System.currentTimeMillis();
IntStream.range(0, 1000000).forEach(it -> pipeline.set("batch" + it, it + ""));
pipeline.syncAndReturnAll();
long endTime = System.currentTimeMillis();
System.out.println(endTime - startTime);
}
实测插入速度如下:
实现原理
pipeline其实就是在我们的操作中节省了很多的I/O操作,将我们多个get或者set操作的I/O操作变成一个I/O操作,节省了很多的I/O时间。同时,让我们的网络影响I/O数据包传输的问题减到最小。
注意
如果我们的redis有密码,那么我们上面的代码需要加一行设置密码
jedis.auth("密码");
做一个有底线的博客主
最新文章
- CLR线程概览(一)
- node socket.io web
- 第二章 第二个spring-boot程序(转载)
- 利用Windows自带的Certutil查看文件MD5
- SQL Server附加数据库文件出错
- ASP.NET验证控件RegularExpressionValidator的常见表达式
- 配置 dovecat 的 PAM
- SCOM2007R2安装和报表服务器配置
- vue2购物车ch4-(筛选v-for 点击的那个设置样式 设为默认地址其他 联动 非循环的列表选中和非选中 删除当前选中的列表)
- P1040 加分二叉树
- scala(二) Future执行逻辑解读
- Kotlin封装RxJava与Retrofit
- EF之Code First代码优先
- Java 工厂模式(一)— 简单工厂模式
- 2星|《重新定义物流》:形式像PPT,内容像公关稿
- 关于几天来研究使用css3动画的一点总结
- 搜索jar包 出现很多 Artifact Id相同 但Group Id不同 的包
- 一个隐蔽的C语言问题反思
- Linux 防火墙iptables开放特定端口
- 『编程题全队』Alpha 阶段冲刺博客Day6