全部产品
Search
文档中心

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

更新时间:Jul 02, 2025

TairDoc adalah struktur data dokumen yang mirip dengan RedisJSON dan sesuai dengan standar JSON. Topik ini menjelaskan metode pengujian kinerja TairDoc serta menyajikan hasil pengujian.

TairDoc menawarkan fitur-fitur berikut:

  • Dukungan penuh untuk standar JSON.

  • Kompatibel dengan JSONPath RFC draft-ietf-jsonpath-base versi 04.

    Catatan

    Hanya perintah JSON.GET yang mendukung versi draf ini.

  • Dukungan penuh untuk JSON Pointer.

  • Penyimpanan data dalam pohon biner untuk mempermudah pengambilan elemen anak.

  • Dukungan konversi dari format JSON ke format XML atau YAML.

Untuk informasi lebih lanjut, lihat Dokumen.

Deskripsi pengujian

Lingkungan pengujian database

Item

Deskripsi

Wilayah dan zona

Zona A di wilayah China (Zhangjiakou)

Jenis penyimpanan

Instance Redis 6.0-compatible DRAM-based

Versi instance

6.2.4.6

Arsitektur instance

Arsitektur master-replika standar dengan mode kluster dinonaktifkan. Untuk informasi lebih lanjut, lihat Arsitektur standar.

Jenis instance

Hasil pengujian kurang dipengaruhi oleh jenis instance. Dalam pengujian ini, jenis instance tair.rdb.4g digunakan.

Lingkungan pengujian klien

Item

Deskripsi

Host klien

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

Wilayah dan zona

Zona A di wilayah China (Zhangjiakou)

Sistem operasi

Alibaba Cloud Linux 3.2104 LTS 64-bit

Jaringan

Instance ECS ditempatkan di virtual private cloud (VPC) yang sama dengan instance Tair dan terhubung ke instance Tair melalui VPC.

Perangkat lunak

Python 3.7 atau lebih baru dengan python-redis terinstal

Data pengujian

Dalam contoh ini, data diambil dari update-center.json di GitHub. Ukuran data tersebut adalah 521 KB.

Alat pengujian

Dalam contoh ini, alat redis-benchmark dari Redis sumber terbuka digunakan.

Prosedur dan hasil pengujian

  1. Masuk ke instance ECS dan jalankan perintah berikut untuk mengunduh data pengujian ke komputer Anda:

    wget https://raw.githubusercontent.com/chadaustin/sajson/master/testdata/update-center.json
  2. Simpan skrip berikut sebagai file bernama insert.py di direktori tempat data pengujian yang diunduh disimpan:

    import redis
    import json
    
    host = "r-bp1s02ae14mr****.redis.rds.aliyuncs.com"
    port = 6379
    password = "testaccount:Rp829dlwa"
    
    r = redis.Redis(host=host, port=port, password=password)
    with open("update-center.json", "r") as f:
              content = f.read()
    json = json.loads(content)
    ret = r.json().set("key", ".", json);
    print(f"insert json to {host}, ret is {ret}")
    Catatan

    Parameter:

    • host: Titik akhir VPC dari instance Tair.

    • port: Nomor port dari instance Tair. Nilai default adalah 6379. Dalam contoh ini, parameter ini disetel ke nilai default.

    • password: Nama pengguna dan kata sandi dari instance Tair. Jika Anda menggunakan akun basis data yang dibuat di konsol untuk terhubung ke instance Tair, Anda harus menentukan kata sandi dalam format <user>:<password>. Sebagai contoh, jika nama pengguna adalah testaccount dan kata sandi adalah Rp829dlwa, kata sandi yang digunakan untuk terhubung ke instance Tair adalah testaccount:Rp829dlwa.

  3. Jalankan perintah berikut untuk menulis data update-center.json ke instance Tair:

    python3 insert.py

    Jika data berhasil ditulis ke instance Tair, keluaran berikut akan ditampilkan:

    insert json to 127.0.0.1, ret is True
  4. Jalankan perintah untuk memulai pengujian.

    • Kueri seluruh file JSON

      Contoh perintah:

      ./src/redis-benchmark -h r-bp1s02ae14mr****.redis.rds.aliyuncs.com-p 6379 -a testaccount:Rp829dlwa-c 10 --threads 10 -n 10000 JSON.GET key

      Hasil Pengujian

      Pemanfaatan CPU database

      QPS

      Latensi rata-rata (ms)

      Latensi persentil ke-99 (ms)

      20%

      569.57

      16.951

      29.279

    • Kueri elemen anak dari file JSON

      Contoh perintah:

      ./src/redis-benchmark -h r-bp1s02ae14mr****.redis.rds.aliyuncs.com-p 6379 -a testaccount:Rp829dlwa-c 10 --threads 10 -n 10000 JSON.GET key $.plugins.ant.developers[0].developerId

      Hasil Pengujian

      Pemanfaatan CPU database

      QPS

      Latensi rata-rata (ms)

      Latensi persentil ke-99 (ms)

      92%

      205879.94

      0.477

      0.943

    • Modifikasi elemen anak dari file JSON

      Contoh perintah:

      ./src/redis-benchmark -h r-bp1s02ae14mr****.redis.rds.aliyuncs.com-p 6379 -a testaccount:Rp829dlwa-c 10 --threads 10 -n 10000 JSON.SET key .plugins.ant.developers[0].developerId '"developer_foo"'

      Hasil Pengujian

      Pemanfaatan CPU database

      QPS

      Latensi rata-rata (ms)

      Latensi persentil ke-99 (ms)

      95%

      79865.83

      1.221

      2.639

    • Lakukan kueri dengan kondisi filter tertentu

      Contoh perintah:

      ./src/redis-benchmark -h r-bp1s02ae14mr****.redis.rds.aliyuncs.com-p 6379 -a testaccount:Rp829dlwa-c 10 --threads 10 -n 10000 JSON.GET key '$.plugins[?(@.scm=="github.com" && @.releaseTimestamp>"2013-01-01")].name'

      Hasil Pengujian

      Pemanfaatan CPU database

      QPS

      Latensi rata-rata (ms)

      Latensi persentil ke-99 (ms)

      30%

      3043.68

      32.649

      65.311

Ringkasan

TairDoc dilengkapi dengan struktur JSON Tree internal dan kerangka kerja JSONPath untuk penguraian serta eksekusi kueri. Dalam konteks ini, TairDoc menunjukkan performa yang baik dalam pembaruan dan kueri.