全部产品
Search
文档中心

Tair (Redis® OSS-Compatible):Whitepaper performa TairSearch

更新时间:Jul 02, 2025

Dokumen ini menjelaskan metode pengujian performa penulisan dan kueri TairSearch dan RediSearch, serta menyajikan hasil pengujian.

TairSearch adalah struktur data pencarian teks lengkap internal dari Tair. TairSearch menggunakan sintaks kueri yang mirip dengan Elasticsearch untuk mengimplementasikan pencarian teks lengkap secara efisien. Untuk informasi lebih lanjut, lihat Pencarian.

Deskripsi pengujian

Lingkungan pengujian klien

Item

Deskripsi

Host klien

Instance Elastic Compute Service (ECS) tipe ecs.g7.8xlarge. Untuk informasi lebih lanjut, lihat Ikhtisar keluarga instance.

Wilayah dan zona

Zona K di wilayah China (Hangzhou)

Sistem operasi

CentOS 7.9 64-bit

Lingkungan pengujian database

Sebuah database Tair dan sebuah database Redis dihosting pada instance ECS yang sama. Tabel berikut menjelaskan kedua database tersebut.

Tabel 1. Database Tair yang Dikelola Sendiri

Item

Deskripsi

Versi Tair

Instance berbasis DRAM yang kompatibel dengan Redis 5.0 versi 5.0.30

Jumlah thread I/O

4

CPU

6 vCPU. Contoh perintah: taskset -c 1-6 ./src/redis-server redis.conf.

Tabel 2. Database Redis yang Dikelola Sendiri

Item

Deskripsi

Versi Redis

7.0.10

Versi RediSearch

2.6.6. Parameter CONCURRENT_WRITE_MODE disetel ke true.

Versi RedisJSON

2.4.6

Jumlah thread I/O

4

CPU

6 vCPU. Contoh perintah: taskset -c 1-6 ./src/redis-server redis.conf.

Data pengujian

Data pengujian mencakup kumpulan artikel dalam bahasa Cina dan Inggris dari Wikimedia. Untuk informasi lebih lanjut, lihat Index of /zhwiki/latest/ dan Index of /enwiki/latest/.

Contoh:

{
    "id":"History_of_Pakistan",
    "title":"History of Pakistan",
    "url":"https://en.wikipedia.org/wiki/History_of_Pakistan",
    "abstract":"The history of Pakistan for the period preceding the country's independence in 1947Pakistan was created as the Dominion of Pakistan on 14 August 1947 after the end of British rule in, and partition of British India. is shared with that of Afghanistan, India."
}
{
    "id":"Wikipedia:哲学",
    "title":"Wikipedia:哲学",
    "url":"https://zh.wikipedia.org/wiki/%E5%93%B2%E5%AD%A6",
    "abstract":"哲学()是研究普遍的、基本问题的学科,包括存在、知识、价值、理智、心灵、语言等领域。哲学与其他学科不同之处在於哲学有独特之思考方式,例如批判的方式、通常是系统化的方法,并以理性论证为基础。"
}

Alat pengujian

Unduh file biner yang sesuai dengan sistem operasi Anda. File untuk Darwin bernama TairSearchBench.Darwin, file untuk Linux bernama TairSearchBench.Linux, dan file untuk Windows bernama TairSearchBench.Windows.

Dalam contoh ini, TairSearchBench.Linux digunakan. Jalankan perintah ./TairSearchBench.Linux --help untuk memeriksa cara menggunakan alat ini.

Usage of ./TairSearchBench.linux:
  -a string
        The address(ip:port) of network to connect 
        # Titik akhir dari instance.
  -c int
        Benchmark konkurensi (default 30)
        # Jumlah tes yang dapat dijalankan secara bersamaan. Nilai default: 30.
  -d uint
        Specify the number of seconds for the benchmark (default 30)
        # Durasi pengujian. Ketika durasi selesai, tes dihentikan. Nilai default: 30. Unit: detik.
  -e string
        The engine backend to run [tairsearch/redisearch]
        # Tentukan TairSearch atau RediSearch sebagai mesin yang dijalankan oleh instance.
  -f string
        Input file to ingest data from (wikipedia abstracts)
        # Path file data eksekusi.
  -h string
        Print usage (default "help")
        # Menampilkan penggunaan alat.
  -j string
        Specify the big json file to write
        # Tentukan path file JSON yang akan ditulis.
  -n uint
        Specify the number of times to benchmark (default 100000)
        # Total jumlah operasi yang dilakukan untuk tes. Nilai default: 100000.
  -o int
        Overwrite the doc (We will write the document with the same document id)
        # Tentukan apakah akan menimpa dokumen asli. Nilai valid: 1 (true) dan 0 (false). Nilai default: 0.
  -p string
        The password of redis to connect
        # Kata sandi instance.
  -q string
        Search query string to benchmark
        # Pernyataan kueri yang digunakan untuk menjalankan tes.
  -s uint
        Specify the compress threshold for tairsearch (default 10000000000)
        # Tentukan ambang batas kompresi untuk TairSearch. Jika ukuran dokumen melebihi ambang batas, dokumen dikompresi. Unit: byte. Nilai default: 10000000000 (10 KB).
  -t string
        Specify the type of benchmark [write/search/readwrite]
        # Setel jenis tes menjadi write, search, atau readwrite.
  -z string
        Specify the analyzer to use for query (default "standard")
        # Tentukan analisis untuk kueri. Nilai default: standard.

Sebelum melakukan pengujian, alokasikan 20 vCPU ke instance ECS. Contoh perintah: taskset -c 10-30 ./TairSearchBench.linux.

Persiapan

Buat skema (indeks). Contoh:

  • TairSearch

    {
        "settings": {
            "compress_doc": {
                "size": "user-defined compression threshold",
                "enable": true
            }
        },
        "mappings": {
            "properties": {
                "id":       {"type": "keyword"},
                "url":      {"type": "keyword", "index": false},
                "title":    {"type": "text", "analyzer": "user-defined analyzer"},
                "abstract": {"type": "text", "analyzer": "user-defined analyzer"},
                "url_len":  {"type": "integer"},
                "abstract_len":  {"type": "integer"},
                "title_len":  {"type": "integer"}
            }
        }
    }
  • RediSearch

    \\ SCHEMA
    $.id AS id TEXT
    $.url AS url TEXT NOINDEX
    $.title AS title TEXT
    $.abstract AS abstract TEXT
    $.abstract_len AS abstract_len NUMERIC
    $.url_len AS url_len NUMERIC
    $.title_len AS title_len NUMERIC
    
    \\ Jika data uji adalah dokumen dalam bahasa Cina, tambahkan LANGUAGE CHINESE ke kode sebelumnya.

Perintah pengujian dan hasil pengujian

Dalam pengujian berikut, satu juta dokumen ditulis untuk setiap tes penulisan. Satu juta kueri dilakukan terhadap satu juta dokumen untuk setiap tes kueri. Setiap tes yang menggabungkan operasi penulisan dan kueri dikonfigurasi untuk berjalan selama 60 detik.

Menulis data dalam bahasa Inggris

Perintah

  • TairSearch

    taskset -c 10-30 ./TairSearchBench.linux -t write -e tairsearch -f ./enwiki-latest-abstract.xml -c 20 -n 1000000 -a 127.0.0.1:6379
  • RediSearch

    taskset -c 10-30 ./TairSearchBench.linux -t write -e redisearch -f ./enwiki-latest-abstract.xml -c 20 -n 1000000 -a 127.0.0.1:6379

Hasil Pengujian

Mesin

QPS

Latensi rata-rata (ms)

Latensi persentil ke-99 (ms)

Penggunaan memori (GB)

TairSearch

22615.15

0.874

1.735

1.39

RediSearch

18295.10

1.092

2.352

1.67

Menulis data dalam bahasa Cina

Perintah

  • TairSearch

    taskset -c 10-30 ./TairSearchBench.linux -t write -e tairsearch -f ./zhwiki-latest-abstract.xml -c 20 -n 1000000 -a 127.0.0.1:6379 -z jieba
  • RediSearch

    taskset -c 10-30 ./TairSearchBench.linux -t write -e redisearch -f ./zhwiki-latest-abstract.xml -c 20 -n 1000000 -a 127.0.0.1:6379 -z chinese

Hasil Pengujian

Mesin

QPS

Latensi rata-rata (ms)

Latensi persentil ke-99 (ms)

Penggunaan memori (GB)

TairSearch

13980.41

1.427

3.275

1.87

RediSearch

10924.40

1.830

3.857

1.83

Catatan

TairSearch memiliki penggunaan memori yang lebih tinggi dibandingkan RediSearch karena analisis jieba digunakan dan token yang lebih halus dihasilkan.

Menimpa data dalam bahasa Inggris

Perintah

  • TairSearch

    taskset -c 10-30 ./TairSearchBench.linux -t write -e tairsearch -f ./enwiki-latest-abstract.xml -c 20 -n 1000000 -o 1 -a 127.0.0.1:6379
  • RediSearch

    taskset -c 10-30 ./TairSearchBench.linux -t write -e redisearch -f ./enwiki-latest-abstract.xml -c 20 -n 1000000 -o 1 -a 127.0.0.1:6379

Hasil Pengujian

Mesin

QPS

Latensi rata-rata (ms)

Latensi persentil ke-99 (ms)

Penggunaan memori (GB)

TairSearch

9775.03

2.041

3.974

0.0002

RediSearch

22239.67

0.898

1.38

0.165

Catatan

Ketika melakukan operasi penimpaan, RediSearch menandai dokumen asli untuk dihapus nanti, menyebabkan penggunaan memori tambahan. Sebagai perbandingan, TairSearch menghapus dokumen asli secara real-time.

Menimpa data dalam bahasa Cina

Perintah

  • TairSearch

    taskset -c 10-30 ./TairSearchBench.linux -t write -e tairsearch -f ./zhwiki-latest-abstract.xml -c 20 -n 1000000 -o 1 -a 127.0.0.1:6379 -z jieba
  • RediSearch

    taskset -c 10-30 ./TairSearchBench.linux -t write -e redisearch -f ./zhwiki-latest-abstract.xml -c 20 -n 1000000 -o 1 -a 127.0.0.1:6379

Hasil Pengujian

Mesin

QPS

Latensi rata-rata (ms)

Latensi persentil ke-99 (ms

Penggunaan memori (GB)

TairSearch

6194.15

3.206

6.456

0.025 (termasuk penggunaan memori oleh kamus analisis jieba)

RediSearch

25096.18

0.796

1.338

0.671

Catatan

Ketika melakukan operasi penimpaan, RediSearch menandai dokumen asli untuk dihapus nanti, menyebabkan penggunaan memori tambahan. Sebagai perbandingan, TairSearch menghapus dokumen asli secara real-time.

Menggunakan pernyataan term untuk mengkueri data dalam bahasa Inggris

Perintah

  • TairSearch

    taskset -c 10-30 ./TairSearchBench.linux -t search -e tairsearch -c 20 -n 1000000 -q '{"query":{"term":{"abstract":"hello"}}}' -a 127.0.0.1:6379
  • RediSearch

    taskset -c 10-30 ./TairSearchBench.linux -t search -e redisearch -c 20 -n 1000000 -q "@abstract:hello" -a 127.0.0.1:6379

Hasil Pengujian

Mesin

QPS

Latensi rata-rata (ms)

Latensi persentil ke-99 (ms)

TairSearch

45501.13

0.437

0.563

RediSearch

28513.87

0.700

0.833

Menggunakan pernyataan term untuk mengkueri data dalam bahasa Cina

Perintah

  • TairSearch

    taskset -c 10-30 ./TairSearchBench.linux -t search -e tairsearch -c 20 -n 1000000 -q '{"query":{"term":{"abstract":"你好"}}}' -a 127.0.0.1:6379
  • RediSearch

    taskset -c 10-30 ./TairSearchBench.linux -t search -e redisearch -c 20 -n 1000000 -q "@abstract:你好" -a 127.0.0.1:6379

Hasil Pengujian

Mesin

QPS

Latensi rata-rata (ms)

Latensi persentil ke-99 (ms)

TairSearch

40670.47

0.489

0.635

RediSearch

24437.48

0.817

1.331

Menggunakan pernyataan match untuk mengkueri data dalam bahasa Inggris

Perintah

  • TairSearch

    taskset -c 10-30 ./TairSearchBench.linux -t search -e tairsearch -c 20 -n 1000000 -q '{"query":{"match":{"abstract":{"operator":"and","query":"chinese history"}}}}' -a 127.0.0.1:6379
  • RediSearch

    taskset -c 10-30 ./TairSearchBench.linux -t search -e redisearch -c 20 -n 1000000 -q "@abstract:chinese history" -a 127.0.0.1:6379

Hasil Pengujian

Mesin

QPS

Latensi rata-rata (ms)

Latensi persentil ke-99 (ms)

TairSearch

24548.94

0.812

0.971

RediSearch

2420.66

8.261

8.523

Menggunakan pernyataan match untuk mengkueri data dalam bahasa Cina

Perintah

  • TairSearch

    taskset -c 10-30 ./TairSearchBench.linux -t search -e tairsearch -c 20 -n 100000 -q '{"query":{"match":{"abstract":{"operator":"and","query":"中国的历史"}}}}' -a 127.0.0.1:6379
  • RediSearch

    taskset -c 10-30 ./TairSearchBench.linux -t search -e redisearch -c 20 -n 100000 -q "@abstract:中国的历史" -a 127.0.0.1:6379  -analyzer jieba

Hasil Pengujian

Mesin

QPS

Latensi rata-rata (ms)

Latensi persentil ke-99 (ms)

TairSearch

6601.05

3.027

3.669

RediSearch

889.37

22.486

22.985

Menggunakan pernyataan bool untuk mengkueri data dalam bahasa Inggris

Perintah

  • TairSearch

    taskset -c 10-30 ./TairSearchBench.linux -t search -e tairsearch -c 20 -n 100000 -q '{"query":{"bool":{"must":[{"term":{"abstract":"war"}},{"term":{"abstract":"japanese"}},{"range":{"abstract_len":{"gt":500}}}],"must_not":{"term":{"abstract":"America"}},"should":[{"term":{"abstract":"chinese"}},{"term":{"abstract":"china"}}]}}}' -a 127.0.0.1:6379
  • RediSearch

    taskset -c 10-30 ./TairSearchBench.linux -t search -e redisearch -c 20 -n 100000 -q "@abstract:(war japanese -America (chinese|china)) @abstract_len:[500 +inf]"  -a 127.0.0.1:6379

Hasil Pengujian

Mesin

QPS

Latensi rata-rata (ms)

Latensi persentil ke-99 (ms)

TairSearch

4554.22

4.388

5.702

RediSearch

1124.08

17.791

18.444

Menggunakan pernyataan bool untuk mengkueri data dalam bahasa Cina

Perintah

  • TairSearch

    taskset -c 10-30 ./TairSearchBench.linux -t search -e tairsearch -c 20 -n 100000 -q '{"query":{"bool":{"must":[{"term":{"abstract":"战争"}},{"term":{"abstract":"日本"}},{"range":{"abstract_len":{"gt":500}}}],"must_not":{"term":{"abstract":"美国"}},"should":[{"term":{"abstract":"中国"}},{"term":{"abstract":"亚洲"}}]}}}' -a 127.0.0.1:6379
  • RediSearch

    taskset -c 10-30 ./TairSearchBench.linux -t search -e redisearch -c 20 -n 1000000 -q "@abstract:(日本 -美国 (中国|亚洲)) @abstract_len:[500 +inf]"  -a 127.0.0.1:6379 -analyzer jieba

Hasil Pengujian

Mesin

QPS

Latensi rata-rata (ms)

Latensi persentil ke-99 (ms)

TairSearch

2619.00

7.623

18.42

RediSearch

1199.76

16.669

17.064

Menggunakan pernyataan range untuk mengkueri data dalam bahasa Inggris

Perintah

  • TairSearch

    taskset -c 10-30 ./TairSearchBench.linux -t search -e tairsearch -c 20 -n 1000000 -q '{"query":{"range":{"abstract_len":{"lte":420, "gte":400}}}}' -a 127.0.0.1:6379
  • RediSearch

    taskset -c 10-30 ./TairSearchBench.linux -t search -e redisearch -c 20 -n 1000000 -q "@abstract_len:[400,420]" -a 127.0.0.1:6379

Hasil Pengujian

Mesin

QPS

Latensi rata-rata (ms)

Latensi persentil ke-99 (ms)

TairSearch

2840.02

7.038

8.599

RediSearch

1307.02

15.300

16.817

Menggunakan pernyataan prefix untuk mengkueri data dalam bahasa Inggris

Perintah

  • TairSearch

    taskset -c 10-30 ./TairSearchBench.linux -t search -e tairsearch -c 20 -n 1000000 -q '{"query":{"prefix":{"abstract":"happiness"}}}' -a 127.0.0.1:6379
  • RediSearch

    taskset -c 10-30 ./TairSearchBench.linux -t search -e redisearch -c 20 -n 1000000 -q "@abstract:happiness*" -a 127.0.0.1:6379

Hasil Pengujian

Mesin

QPS

Latensi rata-rata (ms)

Latensi persentil ke-99 (ms)

TairSearch

36491.10

0.545

0.688

RediSearch

25558.92

0.781

0.930

Menggunakan pernyataan prefix untuk mengkueri data dalam bahasa Cina

Perintah

  • TairSearch

    taskset -c 10-30 ./TairSearchBench.linux -t search -e tairsearch -c 20 -n 1000000 -q '{"query":{"prefix":{"abstract":"开心"}}}' -a 127.0.0.1:6379
  • RediSearch

    taskset -c 10-30 ./TairSearchBench.linux -t search -e redisearch -c 20 -n 1000000 -q "@abstract:开心*" -a 127.0.0.1:6379 -z chinese

Hasil Pengujian

Mesin

QPS

Latensi rata-rata (ms)

Latensi persentil ke-99 (ms)

TairSearch

41308.71

0.481

0.638

RediSearch

27457.86

0.727

1.234

Menulis data dan menggunakan pernyataan term untuk mengkueri data

Perintah

  • TairSearch

    taskset -c 10-30 ./TairSearchBench.linux -t readwrite -e tairsearch -f ./enwiki-latest-abstract.xml -c 20 -d 60 -q '{"query":{"term":{"abstract":"hello"}}}' -a 127.0.0.1:6379
  • RediSearch

    taskset -c 10-30 ./TairSearchBench.linux -t readwrite -e redisearch -f ./enwiki-latest-abstract.xml -c 20 -d 60 -q "@abstract:hello" -a 127.0.0.1:6379

Hasil Pengujian

Mesin

Rata-rata QPS penulisan

Rata-rata latensi penulisan (ms)

Rata-rata QPS

Rata-rata latensi kueri (ms)

TairSearch

14699.77

1.359

16224.03

1.232

RediSearch

11386.75

1.755

11386.70

1.755

Menulis data dan menggunakan pernyataan bool untuk mengkueri data

Perintah

  • TairSearch

    taskset -c 10-30 ./TairSearchBench.linux -t readwrite -e tairsearch -f ./enwiki-latest-abstract.xml -c 20 -d 60 -q '{"query":{"bool":{"must":[{"term":{"abstract":"war"}},{"term":{"abstract":"japanese"}},{"range":{"abstract_len":{"gt":500}}}],"must_not":{"term":{"abstract":"America"}},"should":[{"term":{"abstract":"chinese"}},{"term":{"abstract":"china"}}]}}}' -a 127.0.0.1:6379
  • RediSearch

    taskset -c 10-30 ./TairSearchBench.linux -t readwrite -e redisearch -f ./enwiki-latest-abstract.xml -c 20 -d 60 -q "@abstract:(war japanese -America (chinese|china)) @abstract_len:[500 +inf]" -a 127.0.0.1:6379

Hasil Pengujian

Mesin

Rata-rata QPS penulisan

Rata-rata latensi penulisan (ms)

Rata-rata QPS

Rata-rata latensi kueri (ms)

TairSearch

9589.18

2.085

10504.31

1.903

RediSearch

5284.01

3.784

5283.96

3.784

Ringkasan

TairSearch menggunakan teknologi komputasi paralel multi-core dan indeks terbalik yang dioptimalkan untuk pencarian teks, memberikan throughput tinggi dan latensi rendah. Selain itu, TairSearch memanfaatkan struktur data khusus untuk kompresi dokumen guna mengurangi penggunaan memori dan menghemat biaya tanpa mengorbankan performa baca dan tulis.