redis的list取出数据方式速度测试
redis测试:
package business; import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; import redis.JedisClientSingle;
import redis.clients.jedis.JedisPool; /**
* @Package redis
* @ClassName BusinessTest.java
* @author libin
* @date 2019年4月12日 下午2:16:43
* @version V1.0
*/
public class BusinessTest { public static void main(String[] args) throws Exception {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:spring/applicationContext-jedis.xml");
// JedisPool pool = (JedisPool)
// applicationContext.getBean("redisClient");
JedisPool pool = (JedisPool) applicationContext.getBean("jedisPool");
JedisClientSingle j = new JedisClientSingle(pool); // m1(j);
m5(j,"l2");
// m3(j,"l5");
// m4(j,"l5"); }
//
// redis中的list操作命令中删除指定key中的所有记录命令:
//
// ltrim key 1 0 //结论:这种取数据的方式还可以接受,不如直接取快lrange
private static void m5(JedisClientSingle j,String name) throws Exception {
long t1 = System.currentTimeMillis();
int i = 0;
while(true) {
i++;
String lpop = j.lpop(name);
System.out.println(lpop);
if (lpop==null) {
System.out.println("取完了");
break;
}
} // null
// 取完了
// ------个数:+220001---耗时-------:75990
System.out.println("------个数:+" + i + "---耗时-------:" + (System.currentTimeMillis() - t1));// 11000条5569
// ~5550毫秒
} private static void m4(JedisClientSingle j,String name) throws Exception {
long t1 = System.currentTimeMillis();
for (int i = 0; i < 20; i++) {
// 每次插入11000条
m1(j,name);
}
// 11000条5569
// ------个数:+220000---耗时-------:77590
// ------个数:+220000---耗时-------:78986
// ------个数:+220000---耗时-------:76039
System.out.println("------个数:+" + j.llen(name) + "---耗时-------:" + (System.currentTimeMillis() - t1));// 11000条5569
// ~5550毫秒
} private static void m3(JedisClientSingle j,String name) throws Exception {
long t1 = System.currentTimeMillis();
Long len = j.llen(name);
for (int k = 0; k < len; k++) {
// 根据角标取
String s = j.lindex(name, k);
System.out.println(s);
}
// ------个数:+11000---耗时-------:5550 如果20万用这种方式取,要10多个小时
System.out.println("------个数:+" + len + "---耗时-------:" + (System.currentTimeMillis() - t1));// 11000条5569
// ~5550毫秒
} //经过测试得出结论:取出数据可以用lrange方法 20万数据都没问题
private static void m2(JedisClientSingle j,String name) throws Exception {
long t1 = System.currentTimeMillis();
// 按照范围取
List<String> lrange = j.lrange(name, 0, -1);
for (String string : lrange) {
System.out.println(string);
}
// ------个数:+11000---耗时-------:579
// ------个数:+220000---耗时-------:25499
// ------个数:+220000---耗时-------:9950
System.out.println("------个数:+" + lrange.size() + "---耗时-------:" + (System.currentTimeMillis() - t1));// 11000条529
// ~700毫秒
} private static void m1(JedisClientSingle j,String name) throws Exception {
// 处理文件
long t1 = System.currentTimeMillis(); // String localFilePath = localTempPath+"/"+fileName;
String localFilePath = "D:\\a\\c\\haha.txt"; // 开启固定线程池
// ExecutorService exec = Executors.newFixedThreadPool(50);
// 逐行读取本地文件
List<String> dataList = new ArrayList<String>(); // File f = new File("D:\\a\\b\\in.txt");
File f = new File(localFilePath);
InputStreamReader reader = new InputStreamReader(new FileInputStream(f), "GBK");
BufferedReader br = new BufferedReader(reader);
String str = null;
// 定义计数器
int i = 0;
while ((str = br.readLine()) != null) {
// i的值是从1开始
i++;
// 逐条右插入
// Long len = j.rpush("l1", "l1-"+str);
Long len = j.rpush(name, name+"-" + str);
System.out.println(len);
}
reader.close();
br.close();
} }
redis的list取出数据方式速度测试的更多相关文章
- Delphi 操作SQL 插入一万条数据 三种方式速度测试
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...
- Redis学习——Redis持久化之AOF备份方式保存数据
新技术的出现一定是在老技术的基础之上,并且完善了老技术的某一些不足的地方,新技术和老技术就如同JAVA中的继承关系.子类(新技术)比父类(老技术)更加的强大! 在前面介绍了Redis学习--Redis ...
- 大数据学习day34---spark14------1 redis的事务(pipeline)测试 ,2. 利用redis的pipeline实现数据统计的exactlyonce ,3 SparkStreaming中数据写入Hbase实现ExactlyOnce, 4.Spark StandAlone的执行模式,5 spark on yarn
1 redis的事务(pipeline)测试 Redis本身对数据进行操作,单条命令是原子性的,但事务不保证原子性,且没有回滚.事务中任何命令执行失败,其余的命令仍会被执行,将Redis的多个操作放到 ...
- SpringBoot整合Redis案例缓存首页数据、缓解数据库压力
一.硬编码方式 1.场景 由于首页数据变化不是很频繁,而且首页访问量相对较大,所以我们有必要把首页数据缓存到redis中,减少数据库压力和提高访问速度. 2.RedisTemplate Jedis是R ...
- Redis各种数据结构性能数据对比和性能优化实践
很对不起大家,又是一篇乱序的文章,但是满满的干货,来源于实践,相信大家会有所收获.里面穿插一些感悟和生活故事,可以忽略不看.不过听大家普遍的反馈说这是其中最喜欢看的部分,好吧,就当学习之后轻松一下. ...
- redis 持久化的两种方式
一:快照模式 或许在用Redis之初的时候,就听说过redis有两种持久化模式,第一种是SNAPSHOTTING模式,还是一种是AOF模式,而且在实战场景下用的最多的 莫过于SNAPSHOTTING模 ...
- Redis学习总结(1)——数据持久化
以前研究Redis的时候,很多东西都不太明白,理解得也不太深,现在有时间重新拾起来看看,将一些心得记录下来,希望和大家一起探讨. 一.简介 Redis是一个单线程高可用的Key-Value存储系统,和 ...
- iOS5系统API和5个开源库的JSON解析速度测试
iOS5系统API和5个开源库的JSON解析速度测试 iOS5新增了JSON解析的API,我们将其和其他五个开源的JSON解析库进行了解析速度的测试,下面是测试的结果和工程代码附件. 我们选择的测试对 ...
- OI常用读入方式效率测试
我来填坑了. 这次我用自己写的测试读入的程序来分别测试cin(不关闭流同步),scanf和读入优化的效率差别. 我们分别对三个阶段的数据量n进行测试,通过时间比对来观察性能的差异. n = 102 ...
随机推荐
- matlab练习程序(水波特效)
还记得原来写过一个对图像进行波纹扭曲操作的博文. 这次实现的是水波特效,其实就是通过正余弦函数表示波纹中心位置慢慢向外扩散,通过叠加衰减因子使振幅不断减小,进而产生水波的效果. 效果如下: 原图: 波 ...
- UDK脚本函数性能工具
数据采集 游戏中使用控制台命令来采集脚本函数性能数据 ProfileGame Start // 开始捕获性能数据 ProfileGame Stop // 停止捕获并保存数据文件,并保存到[Game ...
- mmz-asio4delphi死链接的解决办法
最近一段时间,因为忙于网络的项目,特意到网上找了些例子,特意花时间研究了一下马敏钊写的 mmz-asio4delphi 感觉很好用,不过深入研究之后,发现一个问题. 马大的这个代码,会产生死链接. ...
- DWH中增量数据的抽取
1. Truncate-Load 全量加载 简单直观.不易出错,适合数据量不太大的操作 性能问题 2. Increamental-Load 只考虑新增.修改.删除的记录 良好的数据源设计(主要是 ...
- Ambari与Kerberos 集成
Kerberos 介绍 Kerberos 是一个网络认证的框架协议,其设计的初衷便是通过密钥系统为 Client 和 Server 应用程序之间提供强大的认证服务.在使用 Kerberos 认证的集群 ...
- TortoiseGit之配置密钥
TortoiseGit 使用扩展名为ppk的密钥,而不是ssh-keygen生成的rsa密钥.使用命令ssh-keygen -C "邮箱地址" -t rsa产生的密钥在Tortoi ...
- 专治编译器编辑器vscode中文乱码输出 win10 配置系统默认utf-8编码
VS Code输出会出现乱码,很多人都遇到过.这是因为VS Code内部用的是utf-8编码,cmd/Powershell是gbk编码.直接编译,会把“你好”输出成“浣犲ソ”.如果把cmd的活动代码页 ...
- 文本分类实战(四)—— Bi-LSTM模型
1 大纲概述 文本分类这个系列将会有十篇左右,包括基于word2vec预训练的文本分类,与及基于最新的预训练模型(ELMo,BERT等)的文本分类.总共有以下系列: word2vec预训练词向量 te ...
- 【vue】vue全家桶
vue-router(http://router.vuejs.org) vuex(https://vuex.vuejs.org/zh/guide/) vue-resource(https://gith ...
- [LeetCode] 12,13 整数和罗马数互转
12. 整数转罗马数字 题目链接:https://leetcode-cn.com/problems/integer-to-roman/ 题目描述: 罗马数字包含以下七种字符: I, V, X, L,C ...