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("密码");

做一个有底线的博客主

Redis实战--使用Jedis实现百万数据秒级插入的更多相关文章

  1. SQL Server大量数据秒级插入/新增/删除

    原文:SQL Server大量数据秒级插入/新增/删除 1.快速保存,该方法有四个参数,第一个参数为数据库连接,第二个参数为需要保存的DataTable,该参数的TableName属性需要设置为数据库 ...

  2. 百度地图Canvas实现十万CAD数据秒级加载

    背景 前段时间工作室接到一个与地图相关的项目,我作为项目组成员主要负责地图方面的设计和开发.由于地图部分主要涉及的是前端页面的显示,作为一名Java后端的小白,第一次写了这么多HTML和JavaScr ...

  3. 57.大数据线性处理csdn数据(fread,fwrite) 百万数据秒读数据

    创建结构体存储csdn数据 struct csdn { ]; ]; ]; }; 对于分配的大小要先获取最大的长度,定义如下 //姓名最大长度 ; //密码最大长度 ; //邮件最大长度 ; //获取各 ...

  4. 老系统优化同步导入10w+Excel数据 秒级

    背景:老系统asp.net 2.0项目使用客户反应,某个业务每个月导入数据操作很慢,大致需要15-30分钟才会导入完毕: 分析:导入慢的原因:  .数据量过大,且采用的是同步,单个excel shee ...

  5. 【 转】百度地图Canvas实现十万CAD数据秒级加载

    Github上看到: https://github.com/lcosmos/map-canvas 这个实现台风轨迹,这个数据量非常庞大,当时打开时,看到这么多数据加载很快,感到有点震惊,然后自己研究了 ...

  6. redis+Keepalived主从热备秒级切换

    一 简介 安装使用centos 5.10 Master 192.168.235.135 Slave 192.168.235.152 Vip 192.168.235.200 编译环境 yum -y in ...

  7. redis(三)redis+Keepalived主从热备秒级切换

    一 简介 安装使用centos 5.10 Master 192.168.235.135 Slave 192.168.235.152 Vip 192.168.235.200 编译环境 yum -y in ...

  8. Redis实战之Redis + Jedis

    用Memcached,对于缓存对象大小有要求,单个对象不得大于1MB,且不支持复杂的数据类型,譬如SET 等.基于这些限制,有必要考虑Redis! 相关链接: Redis实战 Redis实战之Redi ...

  9. Redis实战之征服 Redis + Jedis + Spring (一)

    Redis + Jedis + Spring (一)—— 配置&常规操作(GET SET DEL)接着需要快速的调研下基于Spring框架下的Redis操作. 相关链接: Redis实战 Re ...

随机推荐

  1. Nmon安装

    下载对应系统的nomn工具(我用centos6.5_64位下载的是nmon_linux_14i.tar.gz) mkdir /nmon cd /nmon 导入nmon的tar.gz包解压 tar -z ...

  2. Detours 劫持

    在使用 Detours 劫持之前必须得拥有这两个东西:detours.h 和 detours.lib. 为了这两个东西我真的是弄了大半天,本着自己动手丰衣足食的思想: 我去 GitHub 克隆了一份来 ...

  3. C# 结合 Golang 开发

    1. 实现方式与语法形式 基本方式:将 Go 程序编译成 DLL 供 C# 调用. 1.1 Go代码 注意:代码中 export 的注释是定义的入口描述不能省略 package main import ...

  4. 8.Nginx基本概述

    io网络模型介绍 1.介绍Nginx Nginx是一个高性能的HTTP和反向代理web服务器 2.常见的Web服务器 httpd Nginx Tengine OpenResty 3.介绍Nginx应用 ...

  5. c语言1博客作业02

    c语言1博客作业02 这个作业属于哪个课程 C语言程序设计 这个作业的要求在哪 [作业要求](https://edu.cnblogs.com/campus/zswxy/SE2019-2/homewor ...

  6. Redis 集群搭建(基于Linux)

    一.基础环境 1.虚拟机 VMware 15.x 2.Linux系统,用的是Centos7的Linux系统 3.Redis数据库版本 5.0.3 二.Redis集群简介 1.背景 Redis在3.0版 ...

  7. Java中的锁[原理、锁优化、CAS、AQS]

    1.为什么要用锁? 锁-是为了解决并发操作引起的脏读.数据不一致的问题. 2.锁实现的基本原理 2.1.volatile Java编程语言允许线程访问共享变量, 为了确保共享变量能被准确和一致地更新, ...

  8. 彻底解决 Mechanism level: Failed to find any Kerberos tgt

    错误描述 Secure Client Cannot Connect ([Caused by GSSException: No valid credentials provided(Mechanism ...

  9. 2018.8.10 python中的迭代器

    主要内容: 1.函数名的使用 2.闭包 3.迭代器 一.函数名的运用 函数名是一个变量,但他是一个特殊的变量,与括号配合可执行函数的变量. 1.函数名的内存地址 def func(): print(' ...

  10. Leetcode算法【34在排序数组中查找元素】

    在之前ARTS打卡中,我每次都把算法.英文文档.技巧都写在一个文章里,这样对我的帮助是挺大的,但是可能给读者来说,一下子有这么多的输入,还是需要长时间的消化. 那我现在改变下方式,将每一个模块细分化, ...