在日常使用中,我们多使用一次的网络命令通信,就像下图所示,
当我们有多条命令的时候,我们就需要多次进行网络命令传输,就像这样,
在某些场景下,我们可以使用mget,hmget等批量的命令,但是却无法同时进行多条命令的通信(由于redis是单线程的,下一次请求必须等待上一次请求执行完成后才能继续执行。然而使用Pipeline模式,客户端可以一次性的发送多个命令,无需等待服务端返回),所以我们想到了Redis的pipeline,也就是我们所说的流水线,他允许我们在一次的网络命令通信中,打包执行多条命令,就像下图这样,
我们知道,Redis命令的执行级别是ms,但是网络传输的时间却是不可控的,使用pipeline的时候,我们节省了大量的网络传输时间,但是对于实时性要求较高的系统,有时候并不适合,因为我们需要等待所有命令的执行完成
- 使用策略:
- 注意每次pipeline携带的数据量
- pipeline每次只能作用于一个Redis节点