@Test
public void testPipLine(){
//根据hashKey依次获取所有value
List<Object> executeResult = redisTemplate.executePipelined(new RedisCallback<Object>() {
@Override
public Object doInRedis(RedisConnection connection) throws DataAccessException {
//业务操作
for (int i = 0; i < 5; i++) {
connection.del(("key"+i).getBytes());
}
return null;
}
});
for (int i = 0; i < executeResult.size(); i++) {
Object o = executeResult.get(i);
System.out.println("o:"+o);
}
}
测试结果:
删除测试
1-1.删除50万条数据,pipline耗时8s,一个一个删除耗时23秒
1-2.删除100万条数据,pipline耗时12s,一个一个删除耗时44秒
1-3.删除200万条数据,pipline耗时25s,一个一个删除耗时92秒
1-4.删除300万条数据,pipline耗时37s,一个一个删除耗时167秒
插入测试
1-1.插入50万条数据,pipline耗时7s,一个一个插入耗时23秒
1-2.插入100万条数据,pipline耗时12s,一个一个插入耗时44秒
1-3.插入200万条数据,pipline耗时28s,数据待更新
1-4.插入300万条数据,pipline耗时46s,数据待更新
从结果来看piplined耗时是单个插入或者删除的1/4到1/3