什么是流水线
- 1 次 pipeline(n条命令)查询时间 = 1 次网络时间 + n 次命令时间;
两点注意
- redis 的命令时间是微秒级的;
- pipeline 每次条数要控制;
客户端实现
import redis.clients.jedis.Jedis;
import redis.clients.jedis.Pipeline;
public class PipelineMain {
public static void main(String[] args) {
Jedis jedis = new Jedis(Const.HOST, Const.PORT);
for(int i = 0; i < 100; i++) {
Pipeline pipeline = jedis.pipelined();
for(int j = i * 100; j < (i + 1) * 100; j++) {
pipeline.hset("hashkey:" + j, "field" + j, "value" + j);
}
pipeline.syncAndReturnAll();
}
}
}
与原生M操作对比
- M操作是原子性的;
- pipeline 不是原子性的;
使用建议
- 注意每次 pipeline 携带的数量;
- pipeline 每次只能作用在一个 redis 节点上;