Mỗi Redis command thông thường = 1 round-trip: client gửi request, đợi response, rồi gửi request tiếp theo.
- Với latency 1ms/request, 1000 commands = 1 giây. Pipelining gom nhiều commands vào một network call, gửi cùng lúc, nhận responses về cùng lúc — giảm round-trips xuống còn 1 (hoặc vài lần batch).
Ví dụ:
python
pipe = redis.pipeline()
for i in range(1000):
pipe.set(f'key:{i}', i)
results = pipe.execute() # 1 round-trip thay vì 1000Pipelining không đảm bảo atomicity (khác với MULTI/EXEC).
- Commands trong pipeline có thể bị xen kẽ với commands từ client khác. Khi nào hiệu quả: bulk insert/update, batch GET/SET, warming cache — bất kỳ lúc nào có nhiều commands độc lập nhau. Khi không giúp: một command phụ thuộc kết quả của command trước — phải dùng Lua script hoặc MULTI/EXEC.
- Khi network latency cao (>1ms như cross-datacenter), pipelining có thể tăng throughput 10-100x.