Pipelining adalah teknik mengirimkan banyak perintah sekaligus ke server dalam 1 kali TCP request tanpa menunggu respon per-command, meningkatkan TPS puluhan kali lipat.
1. Masalah Latensi Jaringan (Round Trip Time / RTT)
Saat aplikasi mengirimkan 1.000 perintah Redis satu per satu secara sekuensial, waktu total eksekusi dikuasai oleh Round-Trip Time (RTT) network latency. Jika latensi jaringan antara App Server ke Redis Server adalah 1ms, maka 1.000 perintah sekuensial membutuhkan waktu minimal 1.000ms (1 detik)!
2. Solusi: Redis Pipelining
Pipelining memungkinkan Client mengirimkan puluhan ribu perintah sekaligus ke dalam buffer TCP socket tanpa perlu menunggu balasan dari server secara individual. Server akan memproses seluruh perintah dan mengembalikan seluruh balasan dalam satu paket respon sekaligus.
# Tanpa Pipelining (1000 RTT):
Client -> SET a 1 -> Server (1ms)
Client <- OK <- Server (1ms)
Client -> SET b 2 -> Server (1ms)
... (Total 1000ms+)
# Dengan Pipelining (1 RTT):
Client -> [SET a 1, SET b 2, SET c 3, ...] -> Server (1ms)
Client <- [OK, OK, OK, ...] <- Server (1ms)
(Total 2ms - 100x Lebih Cepat!)
3. Benchmarking Performa dengan redis-benchmark
Gunakan biner bawaan redis-benchmark di terminal OS untuk menguji batas kemampuan server Redis Anda:
# Uji 100.000 request dengan 50 parallel client
redis-benchmark -q -n 100000 -c 50
# Uji khusus perintah SET dan GET dengan Pipelining 16 command
redis-benchmark -t set,get -n 100000 -P 16 -q