全部产品
Search
文档中心

Tair (Redis® OSS-Compatible):Whitepaper kinerja TairRoaring

更新时间:Jul 02, 2025

TairRoaring adalah implementasi Roaring bitmap di Tair. TairRoaring menyediakan kinerja komputasi yang kuat dan stabil, meningkatkan kecepatan query sambil menggunakan sejumlah kecil memori.

TairRoaring ditingkatkan dari Roaring bitmaps dalam aspek berikut:

  • TairRoaring mencapai keseimbangan antara kinerja dan kompleksitas ruang dalam berbagai skenario melalui penggunaan indeks dua tingkat dan kontainer dinamis.

  • TairRoaring menggunakan teknik optimasi seperti single instruction, multiple data (SIMD), vektorisasi, dan algoritma popcount untuk meningkatkan efisiensi komputasi serta memberikan kompleksitas waktu dan ruang yang efisien.

  • TairRoaring memanfaatkan kinerja komputasi yang kuat dan stabilitas tinggi dari Tair untuk mendukung skenario bisnis.

Catatan

Untuk informasi lebih lanjut tentang TairRoaring, lihat TairRoaring.

Alat uji

Alat uji yang disediakan dalam topik ini dikembangkan menggunakan bahasa pemrograman Go dan mirip dengan utilitas redis-benchmark. Alat ini mudah digunakan dan dimodifikasi serta dapat menghasilkan dua nilai acak untuk membantu membuat contoh uji dan menampilkan hasil sebagai histogram. Untuk informasi lebih lanjut, lihat TairRoaring Test Tool.

Penggunaan:

Usage of ./redis:
  -a string         Kata sandi akun yang digunakan untuk masuk ke instance. Format kata sandi: <user>:<password>.
  -batching int     Mode pipeline. Parameter ini juga menetapkan jumlah perintah individual yang terkandung dalam setiap pipeline. Mode pipeline menggabungkan perintah MULTI dan EXEC. Sebagai contoh, -batching 10 menunjukkan bahwa ada 10 perintah antara perintah MULTI dan EXEC.
  -c int            Jumlah tes yang dijalankan. Parameter ini mengabaikan durasi tes (-d).
  -command string   Perintah tes. Anda dapat menambahkan bidang __RAND__ dan __RAND2__ ke akhiran perintah atau parameter. Bidang tersebut akan berlaku dan menjadi nilai acak hanya ketika ditambahkan ke akhiran perintah atau parameter. Perintah default: TR.GETBIT foo-__RAND__.
  -d int            Durasi tes. Unit: detik. Nilai default: 30.
  -h string         Titik akhir yang digunakan untuk terhubung ke instance. Nilai default: 127.0.0.1.
  -p int            Jumlah tes yang dapat dijalankan secara bersamaan. Nilai default: 4.
  -port int         Nomor port instance. Nilai default: 6379.
  -r int            Rentang nilai acak 1. Nilai default: 100000000.
  -r2 int           Rentang nilai acak 2. Nilai default: 100000000.

Contoh Perintah:

# Jalankan perintah TR.SETBIT. Tetapkan kunci ke angka acak yang kurang dari 100000 dan bidang ke angka acak yang kurang dari 10000000.
./redis -h r-**********0d7f.redis.zhangbei.rds.aliyuncs.com -a user:password -d 30 -r 100000 -r2 10000000 -command "TR.SETBIT foo-__RAND__ bar-__RAND2__" -p 20 -c 1

Metode pengujian dan hasil untuk arsitektur standar

Instance yang digunakan adalah instance DRAM berbasis 16 GB Tair (Enterprise Edition) dengan arsitektur standar. Latensi jaringan kurang dari 0,1 milidetik.

Pengujian untuk satu kunci

  • Pengujian Kinerja

    Menulis data ke satu kunci secara bersamaan untuk mendapatkan nilai maksimum permintaan per detik (QPS).

    • Pengujian Perintah Baca

      Jalankan perintah berikut: TR.GETBIT, TR.GETBITS, TR.RANGE, TR.SCAN, dan TR.RANK. Contoh perintah:

      ./redis -h r-**********0d7f.redis.zhangbei.rds.aliyuncs.com -a user:password -d 30 -r 100000 -r2 10000000 -command "TR.GETBIT foo-__RAND__ bar-__RAND2__" -p 20 -c 1

      Hasil Pengujian:

      Perintah

      Jumlah kunci yang terlibat

      Jumlah catatan data yang terlibat

      Rentang parameter

      Nilai referensi QPS

      Latensi rata-rata (ms)

      TR.GETBIT

      1

      1

      1~10000000

      255000

      0,21

      TR.GETBITS

      1

      100

      1~10000000

      54000

      0,97

      TR.RANK

      1

      1

      1~10000000

      161000

      0,24

      TR.RANGE

      1

      100

      0~100

      129000

      0,46

      TR.SCAN

      1

      100

      1~10000000

      130000

      0,38

    • Pengujian Perintah Tulis

      Jalankan perintah berikut: TR.SETBIT, TR.SETBITS, TR.APPENDBITARRAY, TR.SETRANGE, dan TR.FLIPRANGE. Contoh perintah:

      ./redis -h r-**********0d7f.redis.zhangbei.rds.aliyuncs.com -a user:password -d 30 -r 100000 -r2 10000000 -command "TR.SETBIT foo-__RAND__ bar-__RAND2__" -p 20 -c 1

      Hasil Pengujian:

      Perintah

      Jumlah kunci yang terlibat

      Jumlah catatan data yang terlibat

      Rentang parameter

      Nilai referensi QPS

      Latensi rata-rata (ms)

      TR.SETBIT

      1

      1

      1~10000000

      145000

      0,37

      TR.SETBITS

      1

      100

      1~10000000

      22000

      0,71

      TR.SETBITS (terurut)

      1

      100 (Nilai offset maksimum bit adalah 2^32.)

      1~6000

      28000

      0,66

      TR.APPENDBITARRAY

      1

      1000 (Setengah dari bit memiliki nilai 1.)

      1~10000000

      10000

      0,38

      TR.SETRANGE

      1

      -

      1000

      130000

      0,3

      TR.FLIPRANGE

      1

      -

      1~10000000

      100000

      0,46

    • Pengujian Pipeline

      Gunakan ukuran batch yang berbeda untuk menguji kinerja perintah dalam mode pipeline.

      • TR.SETBIT

        Contoh perintah:

        ./redis -h r-**********0d7f.redis.zhangbei.rds.aliyuncs.com -a user:password -d 30 -r 10000000 -command "TR.SETBIT foo-__RAND__ 1" -batching 10 -p 20 -c 1

        paralel

        batching

        Bit per detik

        Latensi rata-rata (ms)

        20

        10

        460000

        0,42

        10

        50

        665000

        0,72

        6

        100

        660000

        0,85

        3

        200

        680000

        0,79

        3

        500

        681500

        1,96

        2

        100

        658000

        2,6

        TairRoaring性能测试-3

      • TR.GETBIT

        Contoh perintah:

        ./redis -h r-**********0d7f.redis.zhangbei.rds.aliyuncs.com -a user:password -d 30 -r 100000 -r2 10000000 -command "TR.GETBIT foo-__RAND__ __RAND2__" -batching 10 -p 20 -c 1
        Catatan

        Jika kunci yang ditentukan oleh foo-__RAND__ tidak ada, kunci tersebut dianggap sebagai kunci kosong. Oleh karena itu, Anda harus menulis data ke kunci terlebih dahulu untuk tujuan pengujian.

        paralel

        batching

        Bit per detik

        Latensi rata-rata (ms)

        20

        10

        572700

        0,34

        10

        50

        725900

        0,65

        7

        100

        772000

        0,85

        7

        200

        788800

        1,67

        5

        500

        746000

        3,1

        2

        100

        770000

        2,1

        TairRoaring性能发布-4

  • Pengujian Memori

    Jalankan perintah TR.STAT beberapa kali untuk menganalisis distribusi bit dalam sebuah kunci. Kapasitas kunci yang berbeda digunakan. Contoh perintah:

     TR.STAT foo JSON
    • Skenario Data Jarang

      Data jarang menunjukkan bit yang didistribusikan secara jarang dengan kepadatan kurang dari 6,25%. Dalam skenario ini, kunci sebagian besar berisi kontainer array. Kapasitas kunci dapat dihitung menggunakan rumus berikut: Kapasitas kunci = Kardinalitas kunci × 2 byte.

      kardinalitas

      rle-c

      array-c

      bitset-c

      heap mem (byte)

      37700484

      -

      65536

      -

      75400968

      75011384

      -

      65536

      -

      150022768

      100403264

      -

      65536

      -

      200806528

      163090592

      -

      65536

      -

      326181184

    • Skenario Data Acak

      Dalam skenario ini, kunci sebagian besar berisi kontainer bitset. Sistem mengonversi kontainer array menjadi kontainer bitset ketika kontainer array memiliki lebih dari 4.096 elemen.

      kardinalitas

      rle-c

      array-c

      bitset-c

      heap mem (byte)

      253104088

      -

      65534

      2

      506208102

      261169659

      -

      63273

      2263

      522227634

      267974804

      -

      35932

      29604

      533159296

      273694253

      -

      6607

      58929

      536491922

      343504134

      -

      0

      65536

      536870912

      535589835

      -

      0

      65536

      536870912

    • Skenario Bit Acak Berturut-turut

      Dalam skenario ini, kapasitas penyimpanan sangat terkait dengan distribusi bit. Akibatnya, pengujian yang dilakukan dalam skenario ini memiliki sedikit nilai.

Pengujian untuk beberapa kunci

  • Pengujian Penulisan

    Uji kinerja mesin saat data ditulis ke beberapa kunci secara bersamaan. TR.SETBITS membuat 100 bit acak setiap kali. Contoh perintah:

    ./redis -h r-**********0d7f.redis.zhangbei.rds.aliyuncs.com -a user:password -d 30 -r 10000000 -r2 100000 -command "TR.SETBITS foo-__RAND2__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __RAND__ __<table><colgroup></colgroup><colgroup></colgroup><colgroup></colgroup><colgroup></colgroup><tbody><tr><td colspan="1" id="task_2213193__entry_hih_y9q_qgu" rowspan="1" style="background-color:#e5e5e5"><p></p></td><td colspan="1" id="task_2213193__entry_qx0_d93_me1" rowspan="1" style="background-color:#e5e5e5"><p></p></td><td colspan="1" id="task_2213193__entry_grc_8x5_i2v" rowspan="1" style="background-color:#e5e5e5"><p></p></td><td colspan="1" id="task_2213193__entry_biv_wnc_83l" rowspan="1" style="background-color:#e5e5e5"><p></p></td></tr><tr><td colspan="1" id="entry_s4a_piz_95o" rowspan="1"><p>TR.SETBIT</p></td><td colspan="1" id="entry_b1m_zsu_98e" rowspan="1"><p>1</p></td><td colspan="1" id="entry_zan_adb_45s" rowspan="1"><p>91003</p></td><td colspan="1" id="entry_x12_96f_ucv" rowspan="1"><p>0,43</p></td></tr><tr><td colspan="1" id="entry_vmp_smh_ew6" rowspan="1"><p>TR.SETBITS</p></td><td colspan="1" id="entry_zws_bbk_12c" rowspan="1"><p>100</p></td><td colspan="1" id="entry_0v5_45k_ims" rowspan="1"><p>15127</p></td><td colspan="1" id="entry_bbc_5x3_esg" rowspan="1"><p>0,96</p></td></tr><tr><td colspan="1" id="entry_6ey_fbd_3ew" rowspan="1"><p>TR.GETBIT</p></td><td colspan="1" id="entry_trp_gfk_mnx" rowspan="1"><p>1</p></td><td colspan="1" id="entry_11n_mvt_z1l" rowspan="1"><p>154941</p></td><td colspan="1" id="entry_u5m_bfn_qt8" rowspan="1"><p>0,32</p></td></tr><tr><td colspan="1" id="entry_2d8_fbi_cgp" rowspan="1"><p>TR.GETBITS</p></td><td colspan="1" id="entry_rym_2j0_aut" rowspan="1"><p>100</p></td><td colspan="1" id="entry_h2z_tys_cpl" rowspan="1"><p>40166</p></td><td colspan="1" id="entry_r3u_2f9_2uf" rowspan="1"><p>1,08</p></td></tr><tr><td colspan="1" id="entry_f7j_aga_rab" rowspan="1"><p>TR.SCAN</p></td><td colspan="1" id="entry_95x_2dh_h7x" rowspan="1"><p>100</p></td><td colspan="1" id="entry_jeq_f7o_uvi" rowspan="1"><p>104637</p></td><td colspan="1" id="entry_hnj_8qd_eoy" rowspan="1"><p>0,47</p></td></tr><tr><td colspan="1" id="entry_884_r3h_dmz" rowspan="1"><p>TR.RANK</p></td><td colspan="1" id="entry_8l9_tn6_ex1" rowspan="1"><p>-</p></td><td colspan="1" id="entry_zfm_vgy_mg4" rowspan="1"><p>151161</p></td><td colspan="1" id="entry_ir4_aag_dod" rowspan="1"><p>0,32</p></td></tr></tbody></table><p><img/></p></li><li><p>Pengujian untuk operasi bitwise</p><ul><li><p>TR.BITOP</p><p>Perintah ini melakukan operasi bitwise pada beberapa kunci dan menyimpan hasilnya dalam kunci baru. Operasi bitwise AND, OR, NOT, DIFF, dan XOR didukung.</p><div><p>Perintah contoh:</p><code code-type="xCode" data-tag="codeblock" id="codeblock_yhk_r0l_hpc" outputclass="language-plaintext">./redis -h r-**********0d7f.redis.zhangbei.rds.aliyuncs.com -a user:password -d 30 -r 100000 -r2 10000000 -command "TR.BITOP dest-__RAND__ AND foo-__RAND__ foo-__RAND__" -p 3 -c 1

    Perintah

    BIDANG/RENTANG

    Nilai referensi QPS

    Latensi rata-rata (ms)

    TR.SETBIT

    1

    91003

    0,43

    TR.SETBITS

    100

    15.127

    0,96

    TR.GETBIT

    1

    154.941

    0,32

    TR.GETBITS

    100

    40.166

    1,08

    TR.SCAN

    100

    104.637

    0,47

    TR.RANK

    -

    151.161

    0,32

    TairRoaring性能测试-5

  • Pengujian Operasi Bitwise

    • TR.BITOP

      Perintah ini melakukan operasi bitwise pada beberapa kunci dan menyimpan hasilnya dalam kunci baru. Operasi bitwise yang didukung adalah AND, OR, NOT, DIFF, dan XOR.

      Contoh perintah:

      ./redis -h r-**********0d7f.redis.zhangbei.rds.aliyuncs.com -a user:password -d 30 -r 100000 -r2 10000000 -command "TR.BITOP dest-__RAND__ AND foo-__RAND__ foo-__RAND__" -p 3 -c 1

      Operasi bitwise

      Paralel

      Nilai referensi QPS

      Latensi rata-rata (ms)

      AND

      3

      940

      3,18

      OR

      2

      595

      3,45

      XOR

      2

      551

      3,61

      DIFF

      3

      3.577

      0,83

      NOT

      1

      1.281

      0,77

      TairRoaring性能测试-7

    • TR.BITOPCARD

      Perintah ini melakukan operasi bitwise pada beberapa kunci dan mengembalikan jumlah bit yang bernilai 1. Operasi bitwise yang didukung adalah AND, OR, NOT, DIFF, dan XOR.

      Contoh perintah:

      ./redis -h r-**********0d7f.redis.zhangbei.rds.aliyuncs.com -a user:password -d 30 -r 100000 -r2 10000000 -command "TR.BITOPCARD AND foo-__RAND__ foo-__RAND__" -p 2 -c 1

      Operasi bitwise

      Paralel

      Nilai referensi QPS

      Latensi rata-rata (ms)

      AND

      2

      971

      2,05

      OR

      2

      609

      3,27

      XOR

      2

      572

      3,48

      DIFF

      2

      4.290

      0,46

      NOT

      2

      3.577

      0,55

      TairRoaring性能测试-8

Metode pengujian dan hasil untuk arsitektur kluster

Uji kinerja empat instance berbasis DRAM yang menggunakan arsitektur kluster. Instance tersebut memiliki jumlah shard yang berbeda. Setiap shard berukuran 4 GB. Berikut adalah spesifikasi instance:

  • Instance Kluster 8 GB (2 shard)

  • Instance Kluster 16 GB (4 shard)

  • Instance Kluster 32 GB (8 shard)

  • Instance Kluster 64 GB (16 shard)

Untuk mencegah gangguan jaringan, tingkatkan bandwidth semua instance ke maksimum 2.048 Mbit/s. Sebarkan klien yang digunakan dalam pengujian di zona tempat instance berada dan gunakan titik akhir proxy untuk mengakses instance. Jalankan perintah berbeda yang melibatkan satu kunci untuk mendapatkan nilai QPS rata-rata dari instance.

Jalankan perintah berikut: TR.GITBIT, TR.GITBITS, TR.SETBIT, dan TR.SETBITS. Contoh perintah:

./redis -h r-**********0d7f.redis.zhangbei.rds.aliyuncs.com -a user:password -d 30 -r 100000 -r2 10000000 -command "TR.SETBIT foo-__RAND__ bar-__RAND2__" -p 20 -c 1

Hasil Pengujian:

Perintah

Nilai QPS (instance kluster DRAM dengan dua shard)

Nilai QPS (instance kluster DRAM dengan empat shard)

Nilai QPS (instance kluster DRAM dengan delapan shard)

Nilai QPS (instance kluster DRAM dengan 16 shard)

TR.GITBIT

590742

567738

569610

555178

TR.GITBITS

53900

91991

172969

229214

TR.SETBIT

316753

530367

577406

558301

TR.SETBITS

31917

57843

116614

160891

TairRoaring性能测试-9