Nâng CaoRedis iconRedis

Redis Pipelining là gì? Khi nào nó cải thiện performance đáng kể?

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ì 1000

Pipelining 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.

Xem toàn bộ Redis cùng filter theo level & chủ đề con.

Mở danh sách Redis