使用Redis的管道(Pipeline)进行批量操作

本文介绍了Redis的管道(Pipeline)技术,通过对比单条插入与批量插入、单条读取和批量读取的操作,展示了管道在提高数据处理速度和效率方面的优势。测试结果显示,使用Pipeline进行批量操作的时间显著少于单条操作,尤其是在读取数据时,性能提升尤为明显。
摘要由CSDN通过智能技术生成

Redis管道技术简介


Reids是一个cs模式的Tcp服务,类似于http的请求。 当客户端发送一个请求时,服务器处理之后会将结果通过响应报文返回给客户端 。

那么当需要发送多个请求时,难道每次都要等待请求响应,再发送下一个请求吗?

当然不是,这里就可以采用Redis的管道技术。

举个例子,如果说jedis是:request response,request response,…;

     那么pipeline则是:request request… response response的方式。

下面,就简单测试一下使用管道的效果。


单条插入与批量插入

这里采用逐条和批量的方式往Redis中写入一些数据。
先从Mysql中查出需要的数据,这里大概是300条左右,数据量并不大,但是简单做个测试应该没问题。
单条插入—— Jedis:

    Jedis jedis = jedisPool.getResource();
    long start = System.currentTimeMillis();
    List<VehicleInfo> vehicleInfos  = vehicleInfoMapper.selectByParam(param);
    for (VehicleInfo vehicleInfo : vehicleInfos) {      
        //遍历每个vehicleInfo
        TVehicleRealReportMsg real = new TVehicleRealReportMsg();
        Map<String, String> keysmap = new HashMap<String, String>();
        keysmap.put("vehicleStatus", real.getVehicleStatus() + "");
        keysmap.put("chargeStatus", real.getChargeStatus() + "");
        keysmap.put("longitude", "9");
        keysmap.put("latitude", "9");
        List<Long> list1 = new ArrayList<Long>();
        Long l = 1000L;
        Long l2 = 22222L;
        list1.add(l);
        list1.add(l2);
        real.setEngineFaultsList(list1);
        keysmap.put("engineFaultsList", JSON.toJSONString(list1));
        //单条插入
        jedis.hmset(vehicleInfo.getVehicleSeq()&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值