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()&#