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 ...
随机推荐
- Docker知识点整理
目录 1. Docker简介 1.1 Docker是什么 1.2 在隔离的容器中运行软件 1.3 分发容器 2. Docker镜像 2.1 Docker镜像简介 2.2 Docker镜像常见操作 2. ...
- Android如何设置只有边框背景透明的背景呢?
很简单,只需要新建一个 drawable 文件 <?xml version="1.0" encoding="utf-8"?> <shape x ...
- 自己动手在Linux系统实现一个everything程序
大家好,我是良许. 我们知道,在 Windows 下,有一款非常实用的神器,叫作 Everything ,它可以在极短的时间里,搜索出来你所想要的文件/目录,如下图示: Linux 下也有一些类似于 ...
- ArrayList扩容机制实探
ArrayList初始化 问题:执行以下代码后,这个list的列表大小(size)和容量(capacity)分别是多大? List<String> list = new ArrayList ...
- 盘点6个Kubernetes监视工具
导读:监控可帮助您确保Kubernetes应用程序平稳运行并排除可能出现的任何问题.Prometheus是一种流行的开源监视工具,许多公司都使用它来监视其IT基础结构.但是,还有许多其他监视工具可用. ...
- Netty源码死磕一(netty线程模型及EventLoop机制)
引言 好久没有写博客了,近期准备把Netty源码啃一遍.在这之前本想直接看源码,但是看到后面发现其实效率不高, 有些概念还是有必要回头再细啃的,特别是其线程模型以及EventLoop的概念. 当然在开 ...
- Java并发编程实战 05等待-通知机制和活跃性问题
Java并发编程系列 Java并发编程实战 01并发编程的Bug源头 Java并发编程实战 02Java如何解决可见性和有序性问题 Java并发编程实战 03互斥锁 解决原子性问题 Java并发编程实 ...
- react-debug
最近练习react的时候遇到一些问题: 在redux模式下,同一个api依据参数获取不同data的时候,返回的data相同 原因:多次调用该接口时,action的type相同,导致对应于该接口的每个r ...
- jQuery的替换/克隆
1. 替换/克隆: 克隆: var $newImg=$img.clone() 2. 事件: 标准: 1. 普通绑定: $().on("事件名",function(){ ... }) ...
- 《机器学习_07_02_svm_软间隔支持向量机》
一.简介 上一节介绍了硬间隔支持向量机,它可以在严格线性可分的数据集上工作的很好,但对于非严格线性可分的情况往往就表现很差了,比如: import numpy as np import matplot ...