前言
Redis PipleLine Get百万数据性能测试
正文
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.6.1</version>
</dependency>
public class PipelineGet {
public static void main(String[] args) {
Jedis jedis = new Jedis("192.168.44.181", 6379);
Set<String> keys = jedis.keys("batch*");
List<Object> result = new ArrayList();
Pipeline pipelined = jedis.pipelined();
long t1 = System.currentTimeMillis();
for (String key : keys) {
pipelined.hget(key,"f1");
}
result = pipelined.syncAndReturnAll();
for (Object src : result) {
//System.out.println(src);
}
System.out.println("Pipeline get耗时:" + (System.currentTimeMillis() - t1));
}
}
public class PipelineSet {
public static void main(String[] args) {
Jedis jedis = new Jedis("127.0.0.1", 6379);
Pipeline pipelined = jedis.pipelined();
List<Data> dataList = mapper.getDataList();
long t1 = System.currentTimeMillis();
for (int i=0; i < 1000000; i++) {
Data curData = dataList.get(i);
Map<String,String> map = new HashMap();
//将Data以key-value存入map
pipelined.hmset("batch=="+i,map);
}
pipelined.syncAndReturnAll();
long t2 = System.currentTimeMillis();
System.out.println("耗时:"+(t2-t1)+"ms");
}
}
测试结果
- 100w数据下,一条数据8个字段,获取数据所有字段:3831mm;
- 10w数据下,一条数据8个字段,获取数据所有字段:342mm;
- 1w数据下,一条数据8个字段,获取数据所有字段:44mm;
- 100w数据下,一条数据8个字段,获取数据指定单个字段:2468mm;
- 10w数据下,一条数据8个字段,获取数据指定单个字段:256mm;
- 1w数据下,一条数据8个字段,获取数据指定单个字段:45mm;