Redis Pipeline Get百万数据性能测试

819 阅读1分钟

前言

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;