Redis 单节点百万级别数据 读取 性能测试.
个人博客网:https://wushaopei.github.io/ (你想要这里多有)
这里先进行造数据,向redis中写入五百万条数据,具体方式有如下三种:
方法一:(Lua 脚本) vim redis_load.lua
#!/bin/bash
for i = 1, 100000, 1 do
redis.call(“SET”, “ZzZ MYKEY_ZzZ “..i..”key”, i)
end
return “Ok!”
执行命令: redis-cli —eval redis_load.lua
方法二: (Shell 脚本) vim test.sh
#!/bin/bash
for i in seq 1 100000
do
echo key:${i}=>value:${i}
redis-cli set key:${i} value:${i}
done
方法三:(debug populate)
127.0.0.1:6379> debug populate 100000
OK
(9.12s)
查看数据占用的内存大小: 使用info 命令
# Memory
used_memory:531922952 //数据占用了多少内存(字节 byte)
used_memory_human:1.23M //数据占用了多少内存(带单位的,可读性好)
used_memory_rss:20164608 //redis占用了多少内存
used_memory_rss_human:19.23M
used_memory_peak:531922952 //占用内存的峰 值(字节)
used_memory_peak_human:507.28M //占用内存的峰值(带单位的,可读性好)
total_system_memory:1929056256
total_system_memory_human:1.80G
used_memory_lua:37888 //lua引擎所占用的内存大小(字节)
used_memory_lua_human:37.00K
maxmemory:0
maxmemory_human:0B
maxmemory_policy:noeviction
mem_fragmentation_ratio:1.03 //内存碎片率
mem_allocator:jemalloc-3.6.0 //redis内存分配器版本,在编译时指定的。有libc、jemalloc、tcmalloc这3种。
环境说明:
Redis 未做任何优化, 单节点 (服务器上, 内存64G).
数据量 :十万条 (预先存入到redis中.)
数据大小: 1.23M (大约十万条数据)
以下开始读取操作:
第一种方式: 传统读取操作(一次读所有,内存要大,1G以上就可以满足基本要求)
@Test
public void batchGetNotUsePipeline() {
//指定Redis服务器的IP地址和端口号
Jedis jedis = new Jedis("49.234.197.111", 6379);
long start = System.currentTimeMillis();
List<String> list = jedis.lrange("index", 0, 100000);
jedis.close();
long end = System.currentTimeMillis();
System.out.println("batchGetNotUsePipeline :读取数据完成===》 插入数据总条数 size : " + list.size() + " total use:"+(end-start)/1000+ "秒" );
}
执行结果:
batchGetNotUsePipeline :读取数据完成===》 插入数据总条数 size : 100000 total use:1秒
2020-01-18 14:02:06.432 INFO 11928 --- [ Thread-2] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applicationTaskExecutor'
耗时达到了2秒
方法二:采用pipline 方式:
@Test
public void batchGetUsePipeline() {
long start = System.currentTimeMillis();
//指定Redis服务器的IP地址和端口号
Jedis jedis = new Jedis("49.234.197.103", 6379);
Pipeline pipelined = jedis.pipelined();
Response<List<String>> list = pipelined.lrange("index", 0, 200000);
pipelined.sync();
jedis.close();
long end = System.currentTimeMillis();
System.out.println("batchGetNotUsePipeline :读取数据完成===》 插入数据总条数 size : " + list.get().size() + " total use:"+(end-start)/1000+ "秒" );
}
pipeLine批量获取数据加快接口响应速度 ,使用管道后的速度约等于1秒
Redis 单节点百万级别数据 读取 性能测试.的更多相关文章
- Redis:Java链接redis单节点千万级别数据 写入,读取 性能测试
本文是对Redis 单节点,针对不同的数据类型,做插入行测试. 数据总条数为:10058624 环境说明: Redis 未做任何优化, 单节点 (服务器上, 内存64G) ...
- Redis单节点数据同步到Redis集群
一:Redis集群环境准备 1:需要先安装好Redis集群环境并配置好集群 192.168.0.113 7001-7003 192.168.0.162 7004-7006 2:检查redis集群 [r ...
- 百万级别数据Excel导出优化
前提 这篇文章不是标题党,下文会通过一个仿真例子分析如何优化百万级别数据Excel导出. 笔者负责维护的一个数据查询和数据导出服务是一个相对远古的单点应用,在上一次云迁移之后扩展为双节点部署,但是发现 ...
- JAVA使用POI如何导出百万级别数据(转)
https://blog.csdn.net/happyljw/article/details/52809244 用过POI的人都知道,在POI以前的版本中并不支持大数据量的处理,如果数据量过多还会 ...
- JAVA使用POI如何导出百万级别数据
用过POI的人都知道,在POI以前的版本中并不支持大数据量的处理,如果数据量过多还会常报OOM错误,这时候调整JVM的配置参数也不是一个好对策(注:jdk在32位系统中支持的内存不能超过2个G,而在6 ...
- JAVA使用POI如何导出百万级别数据(转载)
用过POI的人都知道,在POI以前的版本中并不支持大数据量的处理,如果数据量过多还会常报OOM错误,这时候调整JVM的配置参数也不是一个好对策(注:jdk在32位系统中支持的内存不能超过2个G,而在6 ...
- Redis02——Redis单节点安装
Redis单节点安装 一.Redis的数据类型 string hash list set zset 二.安装 2.1.下载 wget http://download.redis.io/releases ...
- .net core通过多路复用实现单服务百万级别RPS吞吐
多路复用其实并不是什么新技术,它的作用是在一个通讯连接的基础上可以同时进行多个请求响应处理.对于网络通讯来其实不存在这一说法,因为网络层面只负责数据传输:由于上层应用协议的制订问题,导致了很多传统服务 ...
- redhat6.5 redis单节点多实例3A集群搭建
在进行搭建redis3M 集群之前,首先要明白如何在单节点上完成redis的搭建. 单节点单实例搭建可以参看这个网:https://www.cnblogs.com/butterflies/p/9628 ...
随机推荐
- Code::Blocks无法调试 Starting the debuggee failed: No executable specified, use `target exec'
1.必须建立工程 2.工程名不可有特殊字符或空格,可以有字母.数字.下划线 2.编译器设置里勾选-g(产生调试符号) 3.重新编译项目(如果之前编译过了) 4.调试器设置 > Default & ...
- java中"no enclosing instance of type * is accessible"的解决方法
这种情况一般发生在“在静态方法里面使用内部类” 测试代码: public class Test { public static void main(String[] args) { A a = new ...
- 黑马程序员_毕向东_Java基础视频教程——算术运算符小点(随笔)
算术运算符小点 取模 class Test{ public static void main(String[] args){ System.out.println( 1 % -5); System ...
- 【雕爷学编程】MicroPython动手做(07)——零基础学MaixPy之机器视觉
机器视觉 machine vision机器视觉是人工智能正在快速发展的一个分支.机器视觉作为生产过程中关键技术之一,在机器或者生产线上,机器视觉可以检测产品质量以便将不合格的产品剔除,或者指导机器人完 ...
- 【雕爷学编程】Arduino动手做(59)---RS232转TTL串口模块
37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的.鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为 ...
- Java创建线程的方式
Java中线程的创建有四i种方式: 1. 通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中 2. 通过实现Runnable接口,实例化Thread类 3.应用程序 ...
- kubernetes flannel pod CrashLoopBackoff解决
背景 某环境客户部署了一个kubernetes集群,发现flannel的pod一直重启,始终处于CrashLoopBackOff状态. 排查 对于始终CrashLoopBackOff的pod,一般是应 ...
- oracle [精华] 你是否仍迷信rowid分页?
http://www.itpub.net/thread-1603830-1-1.html
- Spring @Qualifier 注释
可能会有这样一种情况,当你创建多个具有相同类型的 bean 时,并且想要用一个属性只为它们其中的一个进行装配. 在这种情况下,你可以使用 @Qualifier 注释和 @Autowired 注释通过指 ...
- 来自AI的Tips——情景智能
来自AI的Tips--情景智能 上一次我们介绍了华为快服务智慧平台是什么,今天我们来侃一侃平台最有代表性的一个流量入口--情景智能(AI Tips). 首先情景智能在哪呢?大家可以拿出自己的华 ...