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 ...
随机推荐
- 【HBase】HBase和Hue的整合
目录 一.修改hue.ini配置文件 二.启动HBase的thrift server服务 三.启动Hue 四.页面访问 一.修改hue.ini配置文件 cd /export/servers/hue-3 ...
- [hdu1317]spfa
题意:给一个有向图,每个点有一个权值,从1个点出发,初始能量有100,每到达新的点,能量就会加上那个点的权值,当能量大于0时才能继续走,可以多次进入同一点.问能否到达目标点 思路:如果没正权环,则直接 ...
- wepy 小程序开发(Mixin混合)
默认式混合 对于组件data数据,components组件,events事件以及其它自定义方法采用默认式混合,即如果组件未声明该数据,组件,事件,自定义方法等,那么将混合对象中的选项将注入组件之中.对 ...
- node的fs模块
node的file system模块提供的api有同步和异步两种模式(大多数情况下都是用的异步方法,毕竟异步是node的特色,至于提供同步方法,可能应用程序复杂的时候有些场景使用同步会比较合适).异步 ...
- Lvs 调度算法
lvs scheduler:仅根据IP和端口进行调度 静态方法:仅根据算法本身进行调度,不考虑当前服务器实际负载情况:保证起点公平 RR:round robin, 轮调,轮询,轮叫: 调度器通过&qu ...
- LSTM的备胎,用卷积处理时间序列——TCN与因果卷积(理论+Python实践)
什么是TCN TCN全称Temporal Convolutional Network,时序卷积网络,是在2018年提出的一个卷积模型,但是可以用来处理时间序列. 卷积如何处理时间序列 时间序列预测,最 ...
- 数据分析之Numpy、Matplotlib库
NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库. 菜鸟教程:https://www.run ...
- 13.1 Go练习题
13.1 Go练习题 创建一个goroutine与主线程按顺序相互发送信息若干次 且打印 slice在自动扩容后,内存地址变化 goroutine与闭包的坑 练习题汇总 package main fu ...
- 【Nginx】centos7 yum命令安装nginx
安装nginx 首先我们需要使用root用户进行操作 第一步:添加nginx存储库 sudo yum install epel-release 出现如下图说明成功: 第二步:安装nginx sudo ...
- Python小技巧:如何批量更新已安装的库?
众所周知,升级某个库(假设为 xxx),可以用pip install --upgrade xxx 命令,或者简写成pip install -U xxx . 如果有多个库,可以依次写在 xxx 后面,以 ...