Whitepaper ini mencakup tolok ukur throughput puncak dan latensi untuk instans Tair memory-optimized, Tair Persistent Memory-optimized, dan Redis Open-Source Edition, serta lingkungan pengujian, tool, dan perintah yang diperlukan untuk mereproduksi hasil tersebut.
Hasil pengujian
Angka berikut mencerminkan performa puncak pada instans baru dalam pengujian perintah tunggal, dirata-ratakan dari beberapa kali pengujian di berbagai zona. Margin kesalahan sekitar 10% merupakan hal yang normal. Jangan menjalankan instans pada beban puncak di lingkungan produksi. Untuk penentuan ukuran yang akurat, lakukan pengujian dengan workload Anda sendiri.
Tabel berikut menampilkan pengukuran QPS dan latensi untuk sebelas perintah Redis umum.
Command | Tair memory-optimized | Redis Open-Source Edition | Tair Persistent Memory-optimized | ||||||
QPS | Average Latency | 99th Percentile Latency | QPS | Average Latency | 99th Percentile Latency | QPS | Average Latency | 99th Percentile Latency | |
SET | 282.656 | 0,45 | 0,86 | 142.376 | 0,45 | 0,72 | 135.247 | 0,93 | 1,50 |
GET | 519.761 | 0,24 | 0,36 | 204.690 | 0,31 | 0,47 | 208.960 | 0,61 | 0,90 |
ZADD | 208.169 | 0,62 | 1,14 | 113.135 | 0,57 | 0,78 | 96.007 | 1,29 | 1,90 |
ZSCORE | 463.904 | 0,27 | 0,40 | 170.163 | 0,37 | 0,54 | 154.693 | 0,82 | 1,00 |
HSET | 260.069 | 0,49 | 1,03 | 124.613 | 0,51 | 0,97 | 68.565 | 1,81 | 3,80 |
HGET | 494.603 | 0,25 | 0,37 | 188.903 | 0,34 | 0,52 | 180.050 | 0,70 | 0,91 |
LPUSH | 286.324 | 0,44 | 0,84 | 153.269 | 0,42 | 0,59 | 143.951 | 0,87 | 1,20 |
LINDEX | 414.070 | 0,30 | 0,45 | 157.568 | 0,40 | 0,58 | 62.112 | 2,01 | 2,80 |
SADD | 292.738 | 0,44 | 0,86 | 140.155 | 0,45 | 0,63 | 138.710 | 0,90 | 1,20 |
SISMEMBER | 531.139 | 0,24 | 0,34 | 181.492 | 0,35 | 0,52 | 162.585 | 0,78 | 0,99 |
EVALSHA | 214.303 | 0,60 | 1,12 | 101.136 | 0,63 | 0,91 | 89.726 | 1,38 | 2,10 |

Definisi metrik:
QPS (Queries Per Second): Jumlah operasi baca dan tulis yang diproses per detik.
Average latency: Latensi operasi rata-rata, dalam milidetik (ms).
99th percentile latency: Latensi maksimum untuk 99% operasi, dalam ms. Misalnya, 0,5 ms berarti 99% permintaan selesai dalam waktu 0,5 ms.
Latensi diukur secara end-to-end, termasuk waktu antrian baik di database maupun di client uji stres.
Peningkatan tiba-tiba pada latensi persentil ke-99 dapat dipicu oleh transisi encoding struktur data, terutama saat menulis ke instans kosong untuk pertama kalinya.
Skalabilitas performa untuk arsitektur lainnya
Tabel di atas mencakup arsitektur standar (dual-replica). Untuk arsitektur lainnya, skala dari garis dasar standar menggunakan aturan berikut, di mana *n* adalah jumlah shard dalam arsitektur kluster atau jumlah total node dalam arsitektur pemisahan baca/tulis:
Architecture | QPS scaling rule |
Cluster (proxy mode) | >= n x QPS arsitektur standar (dengan kunci yang terdistribusi merata) |
Cluster (direct connection mode) | = n x QPS arsitektur standar (dengan kunci yang terdistribusi merata) |
Read/write splitting | Tulis: sedikit di bawah standar karena traffic replikasi yang lebih tinggi; Baca: >= n x QPS arsitektur standar |
Lingkungan pengujian
Database
Parameter | Value |
Regions and zones | China (Beijing) Zone L, China (Hangzhou) Zone K, China (Shanghai) Zone N, China (Shenzhen) Zone C |
Instance architecture | Standard architecture (dual-replica); cluster not enabled |
Instance version | Redis 7.0 |
Instance types | Tair memory-optimized 8 GB ( |
Versi memiliki dampak kecil terhadap hasil pengujian.
Untuk informasi lebih lanjut, lihat Standard architecture dan Instance types and FAQ.
Test client
Parameter | Value |
Instance type | Elastic Compute Service (ECS) |
Region and zone | Same as the database instance |
Operating system | Alibaba Cloud Linux 3 |
Network | Same virtual private cloud (VPC) as the Tair instance |
Tool pengujian
Semua pengujian menggunakan resp-benchmark, sebuah tool open-source dari tim Tair.
Untuk perintah umum (SET, GET), perilakunya konsisten dengan redis-benchmark.
Untuk perintah kompleks, tool ini menggunakan mode pengujian yang lebih menyerupai workload dunia nyata.
Mode multi-threaded diaktifkan secara default untuk memaksimalkan tekanan permintaan pada server dan mencegah client menjadi bottleneck.
Instal resp-benchmark:
pip install resp-benchmark==0.1.7Setelah instalasi, jalankan resp-benchmark --help untuk daftar lengkap opsi konfigurasi.
Jika Anda menggunakan redis-benchmark, gunakan Redis 7.0 atau versi yang lebih baru untuk dukungan multi-threaded yang optimal.
Jalankan pengujian
Sebelum memulai
Bersihkan database sebelum setiap pengujian untuk menghindari gangguan dari data yang sudah ada.
Atur jumlah koneksi
Jumlah koneksi (-c) secara langsung memengaruhi hasil Anda:
Terlalu sedikit koneksi: Beban pada server tidak mencukupi, menghasilkan QPS rendah yang tidak mencerminkan kapasitas puncak.
Terlalu banyak koneksi: Kapasitas pemrosesan server terlampaui, menyebabkan paket data mengantri di tautan jaringan dan meningkatkan latensi.
Mulailah dengan -c 128 dan sesuaikan berdasarkan hasil Anda. Nilai umum adalah 32, 64, 128, 192, dan 256. Jika Anda menghilangkan -c, resp-benchmark akan memilih nilai secara otomatis.
Perintah pengujian
SET
Menguji performa perintah SET. Rentang kunci: 0–10.000.000. Ukuran nilai: 64 byte. Durasi pengujian: 20 detik.
resp-benchmark -h r-bp1u****8qyvemv2em.redis.rds.aliyuncs.com -p 6379 -s 20 "SET {key uniform 10000000} {value 64}"GET
Menguji performa perintah GET. Ukuran nilai: 64 byte. Durasi pengujian: 20 detik.
Muat data pengujian. Rentang kunci: 0–10.000.000.
resp-benchmark -h r-bp1u****8qyvemv2em.redis.rds.aliyuncs.com -p 6379 --load -c 256 -P 10 -n 10000000 "SET {key sequence 10000000} {value 64}"Jalankan pengujian GET.
resp-benchmark -h r-bp1u****8qyvemv2em.redis.rds.aliyuncs.com -p 6379 -s 20 "GET {key uniform 10000000}"
ZADD
Menguji performa tulis perintah ZADD. Rentang kunci: 0–1.000. Rentang skor: 0–70.000. Maksimal 10.000 anggota per kunci. Durasi pengujian: 20 detik.
resp-benchmark -h r-bp1u****8qyvemv2em.redis.rds.aliyuncs.com -p 6379 -s 20 "ZADD {key uniform 1000} {rand 70000} {key uniform 10000}"ZSCORE
Menguji performa perintah ZSCORE. Durasi pengujian: 20 detik.
Muat data pengujian. Rentang kunci: 0–1.000. 10.007 anggota per kunci.
resp-benchmark -h r-bp1u****8qyvemv2em.redis.rds.aliyuncs.com -p 6379 --load -c 256 -P 10 -n 10007000 "ZADD {key sequence 1000} {rand 70000} {key sequence 10007}"Jalankan pengujian ZSCORE.
resp-benchmark -h r-bp1u****8qyvemv2em.redis.rds.aliyuncs.com -p 6379 -s 20 "ZSCORE {key uniform 1000} {key uniform 10007}"
HSET
Menguji performa perintah HSET. Rentang kunci: 0–1.000. Rentang field: 0–10.000. Ukuran nilai: 64 byte. Durasi pengujian: 20 detik.
resp-benchmark -h r-bp1u****8qyvemv2em.redis.rds.aliyuncs.com -p 6379 -s 20 "HSET {key uniform 1000} {key uniform 10000} {value 64}"HGET
Menguji performa perintah HGET. Durasi pengujian: 20 detik.
Muat data pengujian. Rentang kunci: 0–1.000. 10.007 field per kunci. Ukuran nilai: 64 byte.
resp-benchmark -h r-bp1u****8qyvemv2em.redis.rds.aliyuncs.com -p 6379 --load -c 256 -P 10 -n 10007000 "HSET {key sequence 1000} {key sequence 10007} {value 64}"Jalankan pengujian HGET.
resp-benchmark -h r-bp1u****8qyvemv2em.redis.rds.aliyuncs.com -p 6379 -s 20 "HGET {key uniform 1000} {key uniform 10007}"
LPUSH
Menguji performa perintah LPUSH. Rentang kunci: 0–1.000. Ukuran nilai: 64 byte. Durasi pengujian: 20 detik.
resp-benchmark -h r-bp1u****8qyvemv2em.redis.rds.aliyuncs.com -p 6379 -s 20 "LPUSH {key uniform 1000} {value 64}"LINDEX
Menguji performa perintah LINDEX. Durasi pengujian: 20 detik.
Muat data pengujian. Rentang kunci: 0–1.000. 10.000 elemen per kunci. Ukuran nilai: 64 byte.
resp-benchmark -h r-bp1u****8qyvemv2em.redis.rds.aliyuncs.com -p 6379 --load -c 256 -P 10 -n 10000000 "LPUSH {key sequence 1000} {value 64}"Jalankan pengujian LINDEX.
resp-benchmark -h r-bp1u****8qyvemv2em.redis.rds.aliyuncs.com -p 6379 -s 20 "LINDEX {key uniform 1000} {rand 10000}"
SADD
Menguji performa perintah SADD. Rentang kunci: 0–1.000. Ukuran nilai: 64 byte. Durasi pengujian: 20 detik.
resp-benchmark -h r-bp1u****8qyvemv2em.redis.rds.aliyuncs.com -p 6379 -s 20 "SADD {key uniform 1000} {value 64}"SISMEMBER
Menguji performa perintah SISMEMBER. Durasi pengujian: 20 detik.
Muat data pengujian. Rentang kunci: 0–1.000. 10.007 anggota per kunci. Ukuran nilai: 64 byte.
resp-benchmark -h r-bp1u****8qyvemv2em.redis.rds.aliyuncs.com -p 6379 --load -c 256 -P 10 -n 10007000 "SADD {key sequence 1000} {key sequence 10007}"Jalankan pengujian SISMEMBER.
resp-benchmark -h r-bp1u****8qyvemv2em.redis.rds.aliyuncs.com -p 6379 -s 20 "SISMEMBER {key uniform 1000} {key uniform 10007}"
EVALSHA
Menguji performa SET yang dieksekusi melalui skrip Lua. Rentang kunci: 0–10.000.000. Ukuran nilai: 64 byte. Durasi pengujian: 20 detik.
Muat skrip Lua.
redis-cli -h r-bp1u****8qyvemv2em.redis.rds.aliyuncs.com -p 6379 SCRIPT LOAD "return redis.call('SET', KEYS[1], ARGV[1])"Jalankan pengujian EVALSHA menggunakan digest SHA1 yang dikembalikan pada langkah sebelumnya.
resp-benchmark -h r-bp1u****8qyvemv2em.redis.rds.aliyuncs.com -p 6379 -s 20 "EVALSHA d8f2fad9f8e86a53d2a6ebd960b33c4972cacc37 1 {key uniform 10000000} {value 64}"