在使用redis时,对于相同的数据操作,通过for循环不停的与Redis交互,这样性能不是很好,Redis支持流水线技术,一次性发送所有的数据操作,这样可以大幅度的提高速度。
Demo:
redisTemplate.executePipelined(new SessionCallback<List>() {
@Override
public List execute(RedisOperations operations) throws DataAccessException {
for (int i=0;i<100;i++){
operations.opsForValue().set("pipeline_"+i,i,1,TimeUnit.MINUTES);
}
return null;
}
});
需要注意的是流水线技术和事务一样,都只是进入队列,然后一次性执行,这样不会马上获取到数据,必须执行完成后才能获取到数据,同样如果进行大批量的数据操作,这样会返回大量执行结果,可能会导致内存溢出,这样的话,还是一个一个的去执行。